ECMAScript 2019 规范中新增了 Object.fromEntries()
方法,它的作用是将一个由键值对组成的数组转换为一个对象。本文将详细解析这个方法并带来指导意义和示例代码。
使用 Object.fromEntries() 方法
Object.fromEntries()
方法接受一个由键值对组成的数组作为参数,返回一个由这些键值对构成的对象。如下所示:
const arr = [['name', 'John'], ['age', 30]]; const obj = Object.fromEntries(arr); console.log(obj); // 输出:{ name: 'John', age: 30 }
可以看到,将一个由键值对组成的数组转换为一个对象非常简单。这个方法在使用上也非常灵活,可以理解成是 Object.entries()
方法的反向操作。
为什么要使用 Object.fromEntries() 方法?
在开发中,经常需要将键值对数组转换为对象,这个操作可以使用循环来实现。但是,使用 Object.fromEntries()
方法可以更加简单、快捷地完成这个操作。
此外,在某些情况下,你也许会需要将对象转换为键值对数组。这个操作可以使用 Object.entries()
方法实现。因此,Object.fromEntries()
方法和 Object.entries()
方法可以互相配合使用,让开发更加便捷。
Object.fromEntries() 方法的兼容性
由于 Object.fromEntries()
方法是 ECMAScript 2019 才引入的,因此在一些老旧的浏览器中可能并不支持。如果你需要兼容老浏览器,可以使用 polyfill 库进行兼容工作。
示例代码
接下来,我们来看看如何使用 Object.fromEntries()
方法。
将 URL 参数转换为对象
我们假设有这样一个 URL:
http://example.com/?name=John&age=30
我们需要将 URL 参数转换为一个对象,可以使用 Object.fromEntries()
方法来实现:
const searchParams = new URLSearchParams(location.search); const obj = Object.fromEntries(searchParams); console.log(obj); // 输出:{ name: 'John', age: '30' }
实现一个简单的数组去重方法
给定一个数组,我们需要返回去重后的新数组。我们可以使用 Object.fromEntries()
和 Object.entries()
方法实现:
function unique(arr) { const obj = Object.fromEntries(arr.map(item => [item, item])); return Object.keys(obj); } console.log(unique([1, 2, 2, 3, 3, 3])); // 输出:[ '1', '2', '3' ]
这里,我们先将数组转换为一个由键值对组成的数组,然后将其转换为对象。因为对象中的键是唯一的,所以会自动去重。最后,我们再将对象的键转换为一个新数组返回。
总结
Object.fromEntries()
方法是 ECMAScript 2019 中新增的一个方法,它可以将一个由键值对组成的数组转换为一个对象。该方法使用简单,可以大大提高在开发中转换数据结构的效率。同时,它和 Object.entries()
方法可以互相配合使用,让我们在开发和维护代码时更加方便。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6495da6c48841e98942e1124