ES2017 是 ECMAScript 的第八个版本,也被称为 ECMAScript 2017。它为 JavaScript 带来了许多新的特性和改进。其中两个特性是 Object.values 和 Object.entries,它们让我们更方便地操作对象,提高了代码的可读性和可维护性。
Object.values
Object.values 方法返回一个给定对象自身的所有可枚举属性值的数组。它的语法如下:
Object.values(obj)
其中,obj 是要返回值的对象。
下面是一个简单的示例:
const obj = { foo: 'bar', baz: 42 }; console.log(Object.values(obj)); // ['bar', 42]
在上面的示例中,我们创建了一个对象,然后使用 Object.values 方法返回了它的所有属性值。
Object.values 方法返回的数组中的元素顺序与使用 for...in 循环遍历对象时返回的顺序相同。如果对象的属性值是一个对象,那么返回的是这个对象的引用。如果对象的属性值是一个函数,那么返回的是函数的字符串表示。
Object.values 方法可以用于许多场景,例如:
- 获取对象属性值的数组
- 检查对象是否有某个属性值
下面是一个示例,演示了如何使用 Object.values 方法获取对象属性值的数组:
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // [1, 2, 3]
Object.entries
Object.entries 方法返回一个给定对象自身的所有可枚举属性的键值对数组。它的语法如下:
Object.entries(obj)
其中,obj 是要返回值的对象。
下面是一个简单的示例:
const obj = { foo: 'bar', baz: 42 }; console.log(Object.entries(obj)); // [['foo', 'bar'], ['baz', 42]]
在上面的示例中,我们创建了一个对象,然后使用 Object.entries 方法返回了它的所有键值对。
Object.entries 方法返回的数组中的元素顺序与使用 for...in 循环遍历对象时返回的顺序相同。每个键值对都是一个数组,第一个元素是属性名,第二个元素是属性值。如果对象的属性值是一个对象,那么返回的是这个对象的引用。如果对象的属性值是一个函数,那么返回的是函数的字符串表示。
Object.entries 方法可以用于许多场景,例如:
- 将对象转换为 Map 对象
- 将对象转换为数组
下面是一个示例,演示了如何使用 Object.entries 方法将对象转换为 Map 对象:
const obj = { a: 1, b: 2, c: 3 }; const map = new Map(Object.entries(obj)); console.log(map); // Map { 'a' => 1, 'b' => 2, 'c' => 3 }
总结
Object.values 和 Object.entries 是 ES2017 中的两个新特性,它们让我们更方便地操作对象,提高了代码的可读性和可维护性。Object.values 方法返回一个给定对象自身的所有可枚举属性值的数组,而 Object.entries 方法返回一个给定对象自身的所有可枚举属性的键值对数组。它们可以用于许多场景,例如获取对象属性值的数组、检查对象是否有某个属性值、将对象转换为 Map 对象、将对象转换为数组等。
在实际开发中,我们可以根据具体的需求来选择使用 Object.values 或 Object.entries 方法,从而让代码更加简洁、优雅、易于维护。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66067bd5d10417a2224c1daf