ECMAScript 2021 中的 Object.fromEntries 解析及其应用场景
在 ECMAScript 2019 中,我们已经看到了 Object.entries() 的出现,它可以将一个对象转化为一个键值对数组。而在 ECMAScript 2021 中,我们又迎来了一个新的方法 Object.fromEntries(),它可以将一个键值对数组转化为一个对象。本文将详细解析 Object.fromEntries() 的用法和应用场景。
Object.fromEntries() 的用法
Object.fromEntries() 方法可以接收一个键值对数组作为参数,然后将其转化为一个对象。它的语法如下:
Object.fromEntries(iterable)
其中 iterable 是一个可迭代对象,它的每个元素都是一个键值对数组,例如:
const iterable = [['key1', 'value1'], ['key2', 'value2']];
我们可以调用 Object.fromEntries() 方法将 iterable 转化为一个对象:
const obj = Object.fromEntries(iterable); console.log(obj); // { key1: 'value1', key2: 'value2' }
需要注意的是,如果 iterable 中有重复的键名,后面的键值会覆盖前面的键值。例如:
const iterable = [['key', 'value1'], ['key', 'value2']]; const obj = Object.fromEntries(iterable); console.log(obj); // { key: 'value2' }
Object.fromEntries() 的应用场景
- 将 Map 转化为对象
在我们使用 Map 存储数据时,有时候需要将其转化为对象。这时候就可以使用 Object.fromEntries() 方法,例如:
const map = new Map([['key1', 'value1'], ['key2', 'value2']]); const obj = Object.fromEntries(map); console.log(obj); // { key1: 'value1', key2: 'value2' }
- 将键值对数组转化为对象
在我们处理数据时,有时候需要将键值对数组转化为对象。这时候就可以使用 Object.fromEntries() 方法,例如:
const iterable = [['key1', 'value1'], ['key2', 'value2']]; const obj = Object.fromEntries(iterable); console.log(obj); // { key1: 'value1', key2: 'value2' }
- 将对象转化为另一个对象
有时候我们需要将一个对象转化为另一个对象,这时候就可以使用 Object.fromEntries() 方法结合 Object.entries() 方法,例如:
const obj1 = { key1: 'value1', key2: 'value2' }; const obj2 = Object.fromEntries(Object.entries(obj1).map(([key, value]) => [key, value.toUpperCase()])); console.log(obj2); // { key1: 'VALUE1', key2: 'VALUE2' }
在这个例子中,我们先使用 Object.entries() 方法将 obj1 转化为一个键值对数组,然后使用 map() 方法将每个值转化为大写,最后使用 Object.fromEntries() 方法将其转化为一个新的对象 obj2。
总结
Object.fromEntries() 方法可以将一个键值对数组转化为一个对象,它可以方便地将 Map 转化为对象,将键值对数组转化为对象,以及将一个对象转化为另一个对象。我们可以结合使用 Object.entries() 方法和 map() 方法来实现更加复杂的转化操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6613ce70d10417a22244a905