摘要:返回值给定对象自身可枚举属性的键值对数组。描述返回一个数组,其元素是与直接在上找到的可枚举属性键值对相对应的数组。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。借助方法你可以很容易的将转换为你可以使用下面列出的简易。
Object.entries()
Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。
语法Object.entries(obj)参数
obj
可以返回其可枚举属性的键值对的对象。
给定对象自身可枚举属性的键值对数组。
描述Object.entries()返回一个数组,其元素是与直接在object上找到的可枚举属性键值对相对应的数组。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。
示例const obj = { foo: "bar", baz: 42 }; console.log(Object.entries(obj)); // [ ["foo", "bar"], ["baz", 42] ] // array like object const obj = { 0: "a", 1: "b", 2: "c" }; console.log(Object.entries(obj)); // [ ["0", "a"], ["1", "b"], ["2", "c"] ] // array like object with random key ordering const anObj = { 100: "a", 2: "b", 7: "c" }; console.log(Object.entries(anObj)); // [ ["2", "b"], ["7", "c"], ["100", "a"] ] // getFoo is property which isn"t enumerable const myObj = Object.create({}, { getFoo: { value() { return this.foo; } } }); myObj.foo = "bar"; console.log(Object.entries(myObj)); // [ ["foo", "bar"] ] // non-object argument will be coerced to an object console.log(Object.entries("foo")); // [ ["0", "f"], ["1", "o"], ["2", "o"] ] // iterate through key-value gracefully const obj = { a: 5, b: 7, c: 9 }; for (const [key, value] of Object.entries(obj)) { console.log(`${key} ${value}`); // "a 5", "b 7", "c 9" } // Or, using array extras Object.entries(obj).forEach(([key, value]) => { console.log(`${key} ${value}`); // "a 5", "b 7", "c 9" });将Object转换为Map
new Map() 构造函数接受一个可迭代的entries。借助Object.entries方法你可以很容易的将Object转换为Map:
var obj = { foo: "bar", baz: 42 }; var map = new Map(Object.entries(obj)); console.log(map); // Map { foo: "bar", baz: 42 }Polyfill
你可以使用下面列出的简易 polyfill。
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; };
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/89163.html