在 ES8(也称作 ES2017)中,新增了一种非常实用的方法,它就是 Object.fromEntries()。本文将详细介绍这个方法的用法和意义,并通过示例代码进行说明。
Object.fromEntries() 方法的基本语法
Object.fromEntries() 方法是一个静态方法,它接受一个由键值对组成的数组作为参数,返回一个由这些键值对构成的新对象。下面是它的基本语法:
Object.fromEntries(entries)
其中,entries 是一个由键值对组成的数组,每个键值对都是一个数组,其第一个元素是键,第二个元素是值。例如:
const entries = [['foo', 1], ['bar', 2]]
Object.fromEntries() 方法的作用
Object.fromEntries() 方法的作用是将一个由键值对组成的数组转化为一个对象。这个方法常常与另外一个方法 Object.entries() 配合使用,后者用于将一个对象转化为一个数组,每个元素都是一个数组,其第一个元素是键,第二个元素是值。
通过这两个方法的配合,我们就能够方便地将一个对象和一个数组之间进行转化。这在某些场景下非常实用,例如在对对象进行批量修改或者批量查询时,可以先将对象转化为数组进行操作,然后再将其转回对象。这种方式可以避免在操作过程中频繁创建对象、删除对象等操作,从而提高性能。
使用示例
下面我们来看几个具体的使用示例。
将一个对象转化为一个由键值对数组
const obj = {foo: 1, bar: 2} const entries = Object.entries(obj) console.log(entries) // 输出 [['foo', 1], ['bar', 2]]
将一个由键值对数组转化为一个对象
const entries = [['foo', 1], ['bar', 2]] const obj = Object.fromEntries(entries) console.log(obj) // 输出 {foo: 1, bar: 2}
批量修改一个对象
const obj = {foo: 1, bar: 2} const entries = Object.entries(obj) const modifiedEntries = entries.map(([key, value]) => [key, value * 2]) const modifiedObj = Object.fromEntries(modifiedEntries) console.log(modifiedObj) // 输出 {foo: 2, bar: 4}
批量查询一个对象
const obj = {foo: 1, bar: 2} const keysToQuery = ['foo', 'bar', 'baz'] const entries = Object.entries(obj) const matchingEntries = entries.filter(([key, value]) => keysToQuery.includes(key)) const matchingObj = Object.fromEntries(matchingEntries) console.log(matchingObj) // 输出 {foo: 1, bar: 2}
总结
Object.fromEntries() 方法是一个非常实用的方法,它可以方便地将一个由键值对数组转化为一个对象。在某些场景下,结合 Object.entries() 方法使用,可以极大地提高代码的性能和可读性。如果你是一名前端开发人员,不妨尝试在实际工程中使用这个方法,相信会带来意想不到的好处。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6549ec187d4982a6eb421b10