Object.entries()
是一个现代 JavaScript 中的方法,它返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in
循环(区别在于一个 for-in 循环也枚举原型链中的属性)的顺序一致(两者的主要区别是一个 for-in 循环还会枚举其原型链上的属性)。这个方法在 ES2017(也被称为 ES8)中被添加到 JavaScript 中。
Object.entries()
方法返回一个数组,其元素是对应于对象上直接找到的可枚举属性 [key, value]
对。属性的排列顺序与使用 for...in
循环的顺序相同(两者的主要区别是 for-in
循环枚举原型链中的属性)。
map
, filter
, reduce
等数组方法。Object.entries()
是在 ES2017 中引入的,但可以通过 polyfill 或者升级 Node.js 版本来解决兼容性问题。Object.entries()
返回的是一个数组,数组中的每个元素都是一个包含两个元素的数组,第一个元素是键,第二个元素是值。
map
, filter
, reduce
)来处理对象数据。NWJS 0.36.3 使用的 Node.js 版本是 11.10.1,而 Object.entries()
是在 ES2017 中引入的,因此在 NWJS 0.36.3 中不可用。
升级 NWJS 到支持 Object.entries()
的版本,或者升级 Node.js 到 12.x 或更高版本。
如果你不能升级 Node.js 版本,可以使用 polyfill 来实现 Object.entries()
的功能。
if (!Object.entries) {
Object.entries = function(obj){
var ownProps = Object.keys(obj),
i = ownProps.length,
resArray = new Array(i); // preallocate the Array
while (i--)
resArray[i] = [ownProps[i], obj[ownProps[i]]];
return resArray;
};
}
将上述代码添加到你的项目中,就可以在 NWJS 0.36.3 中使用 Object.entries()
方法了。
const obj = { foo: 'bar', baz: 42 };
// 使用 Object.entries()
const entries = Object.entries(obj);
console.log(entries); // 输出: [['foo', 'bar'], ['baz', 42]]
// 使用 polyfill 的情况
if (!Object.entries) {
Object.entries = function(obj){
var ownProps = Object.keys(obj),
i = ownProps.length,
resArray = new Array(i);
while (i--)
resArray[i] = [ownProps[i], obj[ownProps[i]]];
return resArray;
};
}
const entriesWithPolyfill = Object.entries(obj);
console.log(entriesWithPolyfill); // 输出: [['foo', 'bar'], ['baz', 42]]
通过上述方法,你可以在 NWJS 0.36.3 中使用 Object.entries()
方法。
领取专属 10元无门槛券
手把手带您无忧上云