在 ES7 中,Object.entries()
和 Object.values()
是两个非常实用的工具函数,它们使得处理对象变得更加简单和方便。本文将会介绍这两个函数以及它们的用法和指导意义。
Object.entries()
Object.entries()
函数返回一个给定对象自身可枚举属性的键值对数组。这个数组的排序方式和使用 for...in
循环遍历对象时返回的属性顺序一致。每个元素都是一个两个元素的数组,第一个元素是属性名,第二个元素是对应属性的值。
下面是一个使用 Object.entries()
函数来遍历对象的例子:
const obj = { foo: 'bar', baz: 42 }; console.log(Object.entries(obj)); // [['foo', 'bar'], ['baz', 42]] // 遍历一个对象的属性和值 for (const [key, value] of Object.entries(obj)) { console.log(`${key}: ${value}`); }
在上面的例子中,我们使用了解构来获取数组中的属性名和值。
Object.entries()
的一个实际应用是将一个对象转化为一个 Map。可以使用如下的代码来创建一个 Map:
const obj = { foo: 'bar', baz: 42 }; const map = new Map(Object.entries(obj)); console.log(map); // Map { 'foo' => 'bar', 'baz' => 42 }
上面的代码将一个含有可枚举属性的对象转化为了一个 Map,并且使用了扩展运算符来初始化 Map。
总结一下,使用 Object.entries()
函数可以方便地将一个对象转化为一个数组,以及将数组转化为 Map。这个函数在处理对象时非常实用,因为它可以方便地将对象的属性和值转化为一个数组。
Object.values()
Object.values()
函数返回一个给定对象自身可枚举属性的值的数组,和 Object.entries()
函数非常相似。这个数组的排序方式和使用 for...in
循环遍历对象时返回的属性顺序一致。
下面是一个使用 Object.values()
函数的例子:
const obj = { foo: 'bar', baz: 42 }; console.log(Object.values(obj)); // ['bar', 42]
因为这个函数返回对象自身可枚举属性的值数组,因此如果你只想获取对象的值,那么可以使用这个函数。
Object.values()
函数在处理对象时非常实用,下面是一个示例代码,它演示如何使用这个函数来处理对象中存储的,由 id 和 value 组成的数据:
const data = { 3: { id: 3, value: 'abc' }, 8: { id: 8, value: 'def' }, 2: { id: 2, value: 'ghi' }, }; const values = Object.values(data).sort((a, b) => a.id - b.id); console.log(values); // [{ id: 2, value: 'ghi' }, { id: 3, value: 'abc' }, { id: 8, value: 'def' }]
上面的代码通过使用 Object.values()
函数来获取对象的值数组,并且使用了 Array.prototype.sort()
函数来对数组排序,最后得到了按照 id 升序排列的数组。
指导意义
Object.entries()
和 Object.values()
函数使得处理对象时变得更加简单和方便。这两个函数可以方便地将含有可枚举属性的对象转化为数组,以及处理对象中的值。这些函数在处理数据时非常实用,并且它们的性能优秀。
当你需要处理对象时,请不要忘记这两个函数,它们可以大大简化你的工作。
结语
ES7 中的 Object.entries()
和 Object.values()
函数非常实用,它们使得处理对象时变得更加简单和方便。在处理对象时,可以使用这两个函数来转化对象为数组以及获取对象中的值。这些函数非常实用,并且在性能上优秀,因此如果处理对象时,请不要忘记它们。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64965d2248841e9894371b59