在 ES2017 中,Object.values()
和 Object.entries()
是两个非常有用的方法,它们可以让我们更方便地处理对象的值和键值对。本文将深入探讨这两个方法的使用方法和指导意义。
Object.values()
Object.values()
方法返回对象自身可枚举属性的值的一个数组,值的顺序与使用 for...in
循环的顺序相同(不过,for...in
循环还会枚举原型链上的属性)。下面是一个简单的示例:
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // [1, 2, 3]
这里,我们定义了一个包含三个属性的对象 obj
,然后使用 Object.values()
方法获取了它的值,并将结果存储在 values
变量中。最后,我们打印了 values
数组,它包含了对象的所有值。
需要注意的是,Object.values()
方法只会返回对象自身的可枚举属性的值,而不会返回继承自原型链上的属性的值。如果我们想获取所有属性的值,包括继承自原型链上的属性的值,我们可以使用 for...in
循环。
Object.entries()
Object.entries()
方法返回一个给定对象自身可枚举属性的键值对数组。每个键值对都是一个数组,第一个元素是键,第二个元素是对应的值。下面是一个简单的示例:
const obj = { a: 1, b: 2, c: 3 }; const entries = Object.entries(obj); console.log(entries); // [['a', 1], ['b', 2], ['c', 3]]
这里,我们定义了一个包含三个属性的对象 obj
,然后使用 Object.entries()
方法获取了它的键值对,并将结果存储在 entries
变量中。最后,我们打印了 entries
数组,它包含了对象的所有键值对。
需要注意的是,Object.entries()
方法只会返回对象自身的可枚举属性的键值对,而不会返回继承自原型链上的属性的键值对。如果我们想获取所有属性的键值对,包括继承自原型链上的属性的键值对,我们可以使用 for...in
循环。
指导意义
Object.values()
和 Object.entries()
方法提供了一种更方便的方式来处理对象的值和键值对。它们可以使代码更简洁、更易读,并且可以减少出错的可能性。我们可以使用它们来遍历对象,进行过滤、排序、映射等操作。
下面是一些示例代码,展示了如何使用 Object.values()
和 Object.entries()
方法来进行一些常见的操作:
过滤对象的值
const obj = { a: 1, b: 2, c: 3 }; const filteredValues = Object.values(obj).filter(value => value > 1); console.log(filteredValues); // [2, 3]
过滤对象的键值对
const obj = { a: 1, b: 2, c: 3 }; const filteredEntries = Object.entries(obj).filter(([key, value]) => value > 1); console.log(filteredEntries); // [['b', 2], ['c', 3]]
将对象的值映射为新的值
const obj = { a: 1, b: 2, c: 3 }; const mappedValues = Object.values(obj).map(value => value * 2); console.log(mappedValues); // [2, 4, 6]
将对象的值映射为新的键值对
const obj = { a: 1, b: 2, c: 3 }; const mappedEntries = Object.entries(obj).map(([key, value]) => [key.toUpperCase(), value * 2]); console.log(mappedEntries); // [['A', 2], ['B', 4], ['C', 6]]
将多个对象合并为一个对象
const obj1 = { a: 1, b: 2 }; const obj2 = { c: 3, d: 4 }; const mergedObj = Object.assign({}, ...Object.entries(obj1), ...Object.entries(obj2)); console.log(mergedObj); // { a: 1, b: 2, c: 3, d: 4 }
这些示例代码只是冰山一角,Object.values()
和 Object.entries()
方法还有很多用法,需要我们自己去发掘和实践。
总结
Object.values()
和 Object.entries()
方法是两个非常有用的方法,它们可以让我们更方便地处理对象的值和键值对。我们可以使用它们来遍历对象,进行过滤、排序、映射等操作,使代码更简洁、更易读,并且可以减少出错的可能性。希望本文能够帮助你更深入地理解和使用这两个方法。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6565a4d0d2f5e1655dedf093