在 ES9 中,新增了一个非常实用的方法 Object.fromEntries(),它可以将一个由键值对组成的数组转换成一个对象。本文将详细介绍这个新方法的应用场景及其用法。
用法
Object.fromEntries() 方法接受一个由键值对组成的数组作为参数,返回一个由这些键值对组成的对象。下面是一个简单的示例:
const entries = [ ['foo', 'bar'], ['baz', 42] ]; const obj = Object.fromEntries(entries); console.log(obj); // {foo: "bar", baz: 42}
应用场景
将 Map 转换成对象
我们经常会使用 Map 来存储键值对,但有时我们需要将其转换成对象,这时 Object.fromEntries() 方法就非常实用了。
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]); const obj = Object.fromEntries(map); console.log(obj) // {foo: "bar", baz: 42}
将 URLSearchParams 转换成对象
URLSearchParams 是 URL 查询参数的对象表示形式,我们可以使用它来获取 URL 查询参数,并将其转换成一个对象。
const params = new URLSearchParams('foo=bar&baz=42'); const obj = Object.fromEntries(params); console.log(obj); // {foo: "bar", baz: "42"}
将一维数组转换为对象
有时,我们需要将一个一维数组转换成一个对象,用于对数组元素进行分类或分组。
const arr = ['a', 'b', 'c', 'd']; const obj = Object.fromEntries(arr.map(item => [item, true])); console.log(obj); // {a: true, b: true, c: true, d: true}
将对象键值进行反转
如果要将一个对象的键和值进行反转,可以使用 Object.entries() 和 Object.fromEntries() 方法结合起来。
const obj = {foo: 'bar', baz: 42}; const reversedObj = Object.fromEntries( Object.entries(obj).map(([key, value]) => [value, key]) ); console.log(reversedObj) // {bar: "foo", 42: "baz"}
总结
从上述示例中可以看出,ES9 中新增的 Object.fromEntries() 方法是非常实用的,能够方便地转换一些常见的数据结构,简化代码实现。如果你还不熟悉这个方法,赶快尝试应用它吧!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646624db968c7c53b06cc68f