Object.entries()
Object.entries()
作用:将一个对象中可枚举属性的键名和键值按照二维数组的方式返回。
若对象是数组,则会将数组的下标作为键值返回。
Object.entries({ one: 1, two: 2 }) //[['one', 1], ['two', 2]] Object.entries([1, 2]) //[['0', 1], ['1', 2]]
entries()
返回的数组顺序和for
循环一样,即如果对象的key值是数字,则返回值会对key值进行排序,返回的是排序后的结果
Object.entries({ 3: 'a', 4: 'b', 1: 'c' }) //[['1', 'c'], ['3', 'a'], ['4', 'b']]
利用Object.entries()
创建一个真正的Map
var obj = { foo: 'bar', baz: 42 }; var map1 = new Map([['foo', 'bar'], ['baz', 42]]); //原本的创建方式 var map2 = new Map(Object.entries(obj)); //等同于map1 console.log(map1);// Map { foo: "bar", baz: 42 } console.log(map2);// Map { foo: "bar", baz: 42 }
Object.values()
作用:只返回自己的键值对中属性的值。它返回的数组顺序,也跟
Object.entries()
保持一致
Object.values({ one: 1, two: 2 }) //[1, 2] Object.values({ 3: 'a', 4: 'b', 1: 'c' }) //['c', 'a', 'b']
与Object.keys()比较
ES6中的
Object.keys()
返回的是键名
var obj = { foo: 'bar', baz: 42 }; console.log(Object.keys(obj)) //["foo", "baz"] console.log(Object.values(obj)) //["bar", 42]
entries()、values()总结
var obj = { foo: 'bar', baz: 42 }; console.log(Object.keys(obj)) //["foo", "baz"] console.log(Object.values(obj)) //["bar", 42] console.log(Object.entries(obj)) //[["foo", "bar"], ["baz", 42]]