在 ES8 中,JavaScript 引入了 Object.values() 和 Object.entries() 方法,用于获取对象的值和键值对数组。这两个方法大大简化了对象的遍历和检索,让前端开发更加高效。
Object.values() 方法
Object.values() 方法返回一个由对象值组成的数组。简单的说,就是把对象中所有的属性值提取出来,然后放到一个数组中返回。
用法如下:
const myObject = {a: 1, b: 2, c: 3}; const values = Object.values(myObject); console.log(values); // [1, 2, 3]
下面是一个更加实际的例子:
// javascriptcn.com 代码示例 const users = { 'user-1': { name: 'Alice', age: 20 }, 'user-2': { name: 'Bob', age: 25 }, 'user-3': { name: 'Charlie', age: 30 } }; const names = Object.values(users).map(user => user.name); console.log(names); // ['Alice', 'Bob', 'Charlie']
这个例子中,我们使用 Object.values() 方法来快速获取所有用户的姓名,然后使用 map() 方法生成一个新的数组。
需要注意的是,Object.values() 方法只会获取对象的可枚举属性值。如果对象中包含了不可枚举属性或者原型链中的属性,这些属性值就不会被返回。
Object.entries() 方法
Object.entries() 方法返回一个由键值对数组组成的数组。每个键值对数组含有两个元素,第一个是属性名,第二个是对应的属性值。
用法如下:
const myObject = {a: 1, b: 2, c: 3}; const entries = Object.entries(myObject); console.log(entries); // [['a', 1], ['b', 2], ['c', 3]]
同样,下面是一个更加实际的例子:
// javascriptcn.com 代码示例 const users = { 'user-1': { name: 'Alice', age: 20 }, 'user-2': { name: 'Bob', age: 25 }, 'user-3': { name: 'Charlie', age: 30 } }; const entries = Object.entries(users); console.log(entries); /* [ ['user-1', {name: 'Alice', age: 20}], ['user-2', {name: 'Bob', age: 25}], ['user-3', {name: 'Charlie', age: 30}] ] */
需要注意的是,Object.entries() 方法同样只会返回对象的可枚举属性。如果需要获取不可枚举属性或者原型链中的属性,可以使用 Object.getOwnPropertyNames() 或者 Object.getOwnPropertySymbols() 方法。
总结
Object.values() 和 Object.entries() 方法是 ES8 中新增的两个非常实用的方法,它们可以大大简化对象的遍历和检索。需要注意的是,它们只返回对象的可枚举属性,如果需要获取不可枚举属性或者原型链中的属性,需要使用其他方法。
希望这篇文章能够帮助大家更加深入地理解 Object.values() 和 Object.entries() 方法的使用方法。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6542ae847d4982a6ebc55faf