ES2019 引入了许多新的函数和类型,其中一个有趣的新方法是 Object.fromEntries()
,它可以将一个包含键值对的数组(如Map
)转换为一个对象。
Map 对象
Map
是一种键值对的集合,其中键可以是任何类型。它提供了一个更好的数据结构来存储一系列的键值对,相比于传统的对象,它可以使用更多类型作为键。
const myMap = new Map(); myMap.set("John", "Doe"); myMap.set("Jane", "Doe"); myMap.set("James", "Bond");
可以使用 set()
方法向 Map
中添加键值对,并使用 get()
方法获取相应的值。
console.log(myMap.get("John")); // Doe
Object.fromEntries() 方法
在已有的 Map
中,如果需要将其转换为对象,可以使用 for...of
循环来遍历 Map
并将其转换为对象,代码如下:
const obj = {}; for (const [key, value] of myMap) { obj[key] = value; }
这个方法确实有效,但是写起来太麻烦且费时费力。因此,在 ES2019 中,我们可以使用 Object.fromEntries()
方法将 Map
对象直接转换为对象,代码如下:
const obj = Object.fromEntries(myMap); console.log(obj); // { John: 'Doe', Jane: 'Doe', James: 'Bond' }
这个方法非常简单且易于使用。
知识扩展: Object.entries()
除了 Object.fromEntries()
方法,ES2017 还引入了 Object.entries()
方法,它可以将一个对象转换为一个包含键值对的数组。
const person = { name: "John", age: 30, city: "New York", }; const entries = Object.entries(person); console.log(entries); // [["name","John"],["age",30],["city","New York"]]
示例代码显示了如何使用 Object.entries()
将对象转换成一个数组,并且这个数组可以被转换回 Object
使用 Object.fromEntries()
方法。
const newPerson = Object.fromEntries(entries); console.log(newPerson); // { name: "John", age: 30, city: "New York" }
总结
本文介绍了 Object.fromEntries()
方法的使用,它是将 Map
转换为对象的一种更方便的方法。 我们还了解了 Object.entries()
方法,它可以将对象转换为包含键值对的数组。 这两个方法都很有用,可以在前端开发中轻松实现复杂的数据结构转换。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d0d239b5eee0b5257d5bbe