ECMAScript 2017 里的 Object.values() 方法详解
ECMAScript 2017 中添加的 Object.values() 方法可以非常方便地获取一个对象中所有的值,无需使用 for-in 循环或 Object.keys() 方法。
Object.values() 方法接收一个对象作为参数,并返回一个由该对象的所有可枚举属性值组成的数组。该数组中值的顺序和对象属性的顺序一致。
下面来看一些具体的示例应用。
- 获取对象中的所有值
Object.values() 方法最简单的用途就是获取一个对象的所有属性值。例如:
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // [1, 2, 3]
- 获取数组中的所有值
Object.values() 方法并不仅仅可以用于对象,它还可以用于数组。通过这种方法,可以很方便地获取一个数组中所有元素的值。
const arr = [1, 2, 3]; const values = Object.values(arr); console.log(values); // [1, 2, 3]
- 获取具有 Symbol 属性的对象的属性值
Object.values() 方法可以获取对象中的所有可枚举属性值,包括字符串属性以及 Symbol 属性。
const sym1 = Symbol('a'); const sym2 = Symbol('b'); const obj = { [sym1]: 1, [sym2]: 2 }; const values = Object.values(obj); console.log(values); // [1, 2]
- 过滤对象中的值
通过使用 Array.filter() 方法结合 Object.values() 方法,可以将对象中不需要的值排除掉。
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj).filter(value => value !== 2); console.log(values); // [1, 3]
- 获取 Map 类型的所有值
Object.values() 方法同样适用于 Map 对象。可以获取 Map 中所有的值,而不需要使用 Map.values() 方法。
const map = new Map([[1, 'a'], [2, 'b'], [3, 'c']]); const values = Object.values(map); console.log(values); // ['a', 'b', 'c']
总结
Object.values() 方法是 ECMAScript 2017 中一个非常值得关注的新特性。它简化了获取对象中所有属性值的过程,比如遍历一个对象,或者仅需要一个对象的值而不需要键名。通过这篇文章的介绍,我们可以学到 Object.values() 方法的详细使用方法及其用处,也可以深入理解在实际开发中如何更加有效利用这一特性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649cea1848841e989499c124