在 ES10 中,我们迎来了一个新的方法 Object.fromEntries()
,它可以将键值对数组转换为对象。这个方法看起来很简单,但实际上它有一些鲜为人知的特性,下面我们就来深入了解一下。
什么是 Object.fromEntries()?
Object.fromEntries()
方法是 ES10 中新增的一个静态方法,它可以将一个由键值对数组组成的数组转换为一个对象。
下面是一个简单的示例:
const entries = [['a', 1], ['b', 2], ['c', 3]]; const obj = Object.fromEntries(entries); console.log(obj); // { a: 1, b: 2, c: 3 }
Object.fromEntries() 的特性
1. 处理 Map 对象
我们知道,Map 对象也是由键值对组成的集合,因此我们也可以使用 Object.fromEntries()
方法来将 Map 对象转换为对象。
const map = new Map([['a', 1], ['b', 2], ['c', 3]]); const obj = Object.fromEntries(map); console.log(obj); // { a: 1, b: 2, c: 3 }
2. 处理 Generator 函数
Generator 函数是 ES6 中新增的一种函数,它可以通过 yield 语句来实现暂停执行的效果。在 ES10 中,我们可以使用 Object.fromEntries()
方法来将一个 Generator 函数返回的键值对数组转换为对象。
下面是一个示例:
function* gen() { yield ['a', 1]; yield ['b', 2]; yield ['c', 3]; } const obj = Object.fromEntries(gen()); console.log(obj); // { a: 1, b: 2, c: 3 }
3. 处理对象的键值对
Object.fromEntries()
方法不仅可以将键值对数组转换为对象,它还可以将一个对象的键值对转换为另一个对象。
下面是一个示例:
const obj1 = { a: 1, b: 2, c: 3 }; const obj2 = Object.fromEntries( Object.entries(obj1).map(([key, value]) => [key.toUpperCase(), value * 2]) ); console.log(obj2); // { A: 2, B: 4, C: 6 }
在这个示例中,我们先使用 Object.entries()
方法将对象转换为键值对数组,然后使用 map()
方法对数组中的每个键值对进行处理,最后使用 Object.fromEntries()
方法将处理后的键值对数组转换为一个新的对象。
总结
Object.fromEntries()
方法是一个非常实用的方法,它可以将键值对数组转换为对象,同时还支持处理 Map 对象和 Generator 函数,以及处理对象的键值对。在实际开发中,我们可以充分利用这个方法来简化代码,并提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/656daa79d2f5e1655d5e92a8