ES8 引入了许多新的特性和静态对象方法,其中 Object.entries() 和 Object.values() 是其中两个值得我们深入学习的方法之一。
Object.entries()
Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组。这个数组包含了该对象的所有属性,包括继承自原型对象的属性,键值对的顺序与通过手动循环对象的属性时一致。
Object.entries() 方法的语法如下:
Object.entries(obj)
其中,obj 表示要获取键值对的对象。
下面是一个例子:
const obj = { name: 'Tom', age: 22, gender: 'male' }; const entries = Object.entries(obj); console.log(entries); // Output: [ [ 'name', 'Tom' ], [ 'age', 22 ], [ 'gender', 'male' ] ]
Object.values()
Object.values() 方法返回一个给定对象自身可枚举属性的属性值数组。这个数组包含了该对象的所有属性的值,顺序与通过手动循环对象的属性时一致。
Object.values() 方法的语法如下:
Object.values(obj)
其中,obj 表示要获取属性值数组的对象。
下面是一个例子:
const obj = { name: 'Tom', age: 22, gender: 'male' }; const values = Object.values(obj); console.log(values); // Output: [ 'Tom', 22, 'male' ]
示例应用
Object.entries() 和 Object.values() 可以帮助我们更方便地遍历对象。下面介绍两个可以用到这两个方法的例子。
转换对象为 Map
你可以使用 Object.entries() 将对象转换为 Map 对象,示例代码如下:
const obj = { name: 'Tom', age: 22, gender: 'male' }; const map = new Map(Object.entries(obj)); console.log(map); // Output: Map { 'name' => 'Tom', 'age' => 22, 'gender' => 'male' }
查找对象中某个属性的值是否唯一
你可以使用 Object.values() 将对象中某个属性的值全部取出,然后利用 Set 去重,如果去重后的长度和原数组长度相等,说明该属性值唯一,否则不唯一,示例代码如下:
-- -------------------- ---- ------- ----- --- - - - ----- ------ ---- --- ------- ------ -- - ----- ------- ---- --- ------- -------- -- - ----- ------- ---- --- ------- -------- -- -- -------- ------------- ---- - ------ --- -------------------------------- -- ----------------- --- ----------- - ------------------------- -------- -- ------- -----
总结
Object.entries() 和 Object.values() 方法是非常实用的两个静态对象方法,它们可以帮助我们更方便地遍历对象,转换对象为 Map 对象以及查找对象中某个属性的值是否唯一。希望本文能对您有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646911ee968c7c53b092344b