Ale*_*edt 73 javascript arrays cross-browser object node.js
我有一个简单的对象,如下所示:
var countries = {
"Argentina":1,
"Canada":2,
"Egypt":1,
};
Run Code Online (Sandbox Code Playgroud)
我需要创建两个数组.第一个数组是来自对象的所有键的数组.我创建了这个数组:
var labels = Object.keys(countries);
Run Code Online (Sandbox Code Playgroud)
这很好用.我获得了一系列国家.现在当我尝试从值创建数组时...
var labels = Object.values(countries);
Run Code Online (Sandbox Code Playgroud)
我收到此错误: Uncaught TypeError: Object.values is not a function JavaScript
我不知道我做错了什么.我console.log countries在声明之前labels和之后的console.log 并且对象保持不变.我该如何正确使用Object.values()?
tym*_*eJV 204
.values许多浏览器都不支持 - 您可以使用.map获取所有值的数组:
var vals = Object.keys(countries).map(function(key) {
return countries[key];
});
Run Code Online (Sandbox Code Playgroud)
请参阅MDN doc:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values或Official doc:https://tc39.github.io/ecma262/#sec- object.values(感谢@evolutionxbox进行更正)
j3f*_*3ff 13
对于那些最终在这里并使用Angular的人来说,添加import 'core-js/es7/object';到polyfills.ts文件解决了我的问题.
/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es6/array';
import 'core-js/es6/date';
import 'core-js/es6/function';
import 'core-js/es6/map';
import 'core-js/es6/math';
import 'core-js/es6/number';
import 'core-js/es6/object';
import 'core-js/es6/parse-float';
import 'core-js/es6/parse-int';
import 'core-js/es6/regexp';
import 'core-js/es6/set';
import 'core-js/es6/string';
import 'core-js/es6/symbol';
import 'core-js/es6/weak-map';
import 'core-js/es7/array';
import 'core-js/es7/object'; // added import
Run Code Online (Sandbox Code Playgroud)