在 ES9 中,新增了一种构造对象的方法 Object.fromEntries()
,它可以将由键值对组成的数组转换为一个对象。
语法
Object.fromEntries(iterable)
其中,iterable
是一个可迭代对象,每个成员都是一个键值对数组。
示例
const arr = [['name', 'Alice'], ['age', 20], ['gender', 'female']]; const obj = Object.fromEntries(arr); console.log(obj); // {name: "Alice", age: 20, gender: "female"}
使用技巧
1. 将 Map 转换为对象
在 ES6 中,我们可以使用 Map
来存储键值对,但是在实际应用中,我们往往需要将其转换为对象。使用 Object.fromEntries()
方法可以很方便地实现这个功能。
const map = new Map([['name', 'Alice'], ['age', 20], ['gender', 'female']]); const obj = Object.fromEntries(map); console.log(obj); // {name: "Alice", age: 20, gender: "female"}
2. 过滤对象属性
有时候我们需要从一个对象中选取一些属性,可以使用 Object.entries()
方法将对象转换为数组,再使用数组的 filter()
方法进行筛选,最后使用 Object.fromEntries()
方法将数组转换为对象。
const obj = { name: 'Alice', age: 20, gender: 'female' }; const keys = ['name', 'gender']; const filteredObj = Object.fromEntries(Object.entries(obj).filter(([key]) => keys.includes(key))); console.log(filteredObj); // {name: "Alice", gender: "female"}
3. 对象属性重命名
有时候我们需要将对象中某个属性重命名,可以使用 Object.entries()
方法将对象转换为数组,再使用数组的 map()
方法进行重命名,最后使用 Object.fromEntries()
方法将数组转换为对象。
const obj = { name: 'Alice', age: 20, gender: 'female' }; const renamedObj = Object.fromEntries(Object.entries(obj).map(([key, value]) => [`${key}_new`, value])); console.log(renamedObj); // {name_new: "Alice", age_new: 20, gender_new: "female"}
总结
Object.fromEntries()
方法可以很方便地将由键值对组成的数组转换为一个对象,它的使用技巧包括将 Map
转换为对象、过滤对象属性和对象属性重命名等。在实际应用中,我们可以根据需要灵活使用这个方法,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657548f1d2f5e1655de7139f