在2017年发布的ECMAScript 2017标准中,有两个新的Object方法被添加了进来,它们分别是Object.values和Object.entries。这两个新方法能够大幅度提高开发人员的开发效率和代码的可读性。在本文中,我们将深入研究这两个方法,并为大家提供一些实例代码。
Object.values()
Object.values()方法返回一个给定对象的属性值的数组。属性值的顺序与使用for...in循环得到的顺序相同,但是不保证,因为for-in循环是枚举对象的所有可枚举属性(包括原型中的属性)。
使用方法
语法如下:
Object.values(obj)
其中obj参数是必需的,obj表示要从中提取值的目标对象。
示例
const obj = { x: 'foo', y: 42 }; console.log(Object.values(obj)); // ["foo", 42]
上述示例中,我们定义了一个名为obj的对象,然后使用Object.values()方法来提取obj对象中的所有属性的值,最后返回的是一个数组。
Object.entries()
Object.entries()方法返回一个给定对象自身可枚举属性的[key, value]形式的数组,数组中的key-value对与for...in循环遍历的顺序相同(不保证,因为for-in循环遍历的是原型链上所有可枚举的属性)。
使用方法
语法如下:
Object.entries(obj)
其中obj参数是必需的,obj表示要从中提取键值对的目标对象。
示例
const obj = { x: 'foo', y: 42 }; console.log(Object.entries(obj)); // [["x", "foo"], ["y", 42]]
上述示例中,我们定义了一个名为obj的对象,然后使用Object.entries()方法来提取obj对象中的所有属性的键值对,最后返回的是一个二维数组。
用法示例
Object.values和Object.entries可与数组和函数很好地结合使用。
Object.values()
从对象获取值
const obj = { x: 'foo', y: 42 }; Object.values(obj); // ["foo", 42]
转换Map数据结构为数组
const map = new Map([ ['a', 1], ['b', 2] ]); Object.values(map); // [1, 2]
Object.entries()
将对象转换为Map数据结构
const obj = { x: 'foo', y: 42 }; const map = new Map(Object.entries(obj)); console.log(map); // Map(2) {"x" => "foo", "y" => 42}
将对象转换为数组
const obj = { x: 'foo', y: 42 }; console.log(Object.entries(obj)); // [["x", "foo"], ["y", 42]]
结论
Object.values和Object.entries方法为ECMAScript的JS引擎添加了更多有用的功能。通过快速和高效地获取对象和数组的值和键值对,这两个函数能够大幅提高您的代码质量和开发效率。我强烈建议大家开始使用这两个函数,让您的代码变得更加清晰、可读、可维护,从而提高应用程序的质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672be027ddd3a70eb6d392b1