前言
在 ES6 中,我们可以通过 Object.keys()
获取对象的所有 key,并将其组成一个数组返回。但如果我们想要同时获取对象的 key 和 value,我们需要自己手动实现或使用其他工具库。而在 ES7 中,新增了两个方法 Object.entries()
和 Object.values()
,可以让我们更方便地获取对象的 key 和 value。
Object.entries()
Object.entries()
方法返回一个给定对象自身可枚举属性的键值对数组。其返回的数组中,每个元素都是一个具有两个元素的数组,第一个元素表示对象的属性名,第二个元素表示该属性的值。
示例代码:
const obj = { foo: 'bar', baz: 42 }; console.log(Object.entries(obj)); // [ [ 'foo', 'bar' ], [ 'baz', 42 ] ]
如果对象中存在不可枚举的属性,则这些属性不会被包含在返回的数组中:
-- -------------------- ---- ------- ----- --- - ----------------- - ---- - ------ --- ----------- ----- -- ---- -- ---- - ------ -------- ----------- ---- -- --- - --- --------------------------------- -- - - ------ ------- - -
值得注意的是,Object.entries()
方法返回的数组中,属性的顺序是根据对象中属性出现的顺序而定的。如果需要按照属性名字母升序排序,可以结合 Array.prototype.sort()
使用:
const obj = { a: 1, c: 3, b: 2 }; const sortedEntries = Object.entries(obj).sort(); console.log(sortedEntries); // [ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]
Object.values()
Object.values()
方法返回一个给定对象自身可枚举属性的值数组。和 Object.entries()
方法类似,返回的数组中,每个元素都是一个属性值。
示例代码:
const obj = { foo: 'bar', baz: 42 }; console.log(Object.values(obj)); // [ 'bar', 42 ]
和 Object.entries()
方法一样,Object.values()
方法也不会包含对象中不可枚举的属性。
-- -------------------- ---- ------- ----- --- - ----------------- - ---- - ------ --- ----------- ----- -- ---- -- ---- - ------ -------- ----------- ---- -- --- - --- -------------------------------- -- - ------- -
总结
在 ES7 中,新增了两个方法 Object.entries()
和 Object.values()
,可以用于更方便地获取对象的 key 和 value。利用这两个方法,可以让我们更加便捷地操作对象,提高代码效率和可读性。
参考链接
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645acd3c968c7c53b0d1da7a