JavaScript 如何将一个普通对象转换为ES6 Map

JavaScript 如何将一个普通对象转换为ES6 Map

在JavaScript中,有很多方法可以将一个普通对象转换为ES6地图。最简单和最有效的方法是使用 Object.entries()函数和Map() 构造函数。相比之下,更灵活的替代方法包括 Object.keys()和Array.prototype.forEach()以及for…in循环和Map()函数方法。

ES6 中的 Map 是一个键值对的集合。这里我们可以使用任何类型的对象作为键,包括像字符串和数字这样的原始数据类型。地图中的值可以是任何类型的对象。

地图和对象的主要区别在于,在地图中,键可以有任何数据类型,而在对象中,它们总是被转换为字符串。

尽管如此,地图比普通对象有一些优势,比如可迭代性和保证元素的顺序。这篇文章将介绍如何使用JavaScript将一个普通的对象转换成ES6地图。

方法1:使用Object.entry()和Map()

我们今天要学习的第一个方法是将普通对象转换为ES6地图,包括两个步骤

  • 使用Object. entries()方法从对象中获取一个键值对数组

  • 然后将该数组传递给Map()构造函数。

例子

Object. entries()方法返回的数组中的每一个数组都代表对象中的一个键值对。下面是一个例子,说明如何使用Object.entry()和Map()构造函数将一个普通对象变成一个ES6地图。

let plainObject = { "one": 1, "two": 2, "three": 3 };
let map = new Map(Object.entries(plainObject));
console.log(map); 

在这个例子中,使用Object. entries()函数将普通对象变成一个键值对数组。然后,该数组被传递给Map()函数,后者用这些键值对生成一个新的Map对象。

Object. entries()方法只需要一行代码,并且被大多数现代浏览器所完全支持。然而,这种方法只限于具有可枚举属性的对象,并且不包括键值为符号的属性。

方法2:使用for…in循环和Map()构造函数

现在让我们看看另一种将普通对象转换为ES6地图的方法。这个方法包括以下步骤

  • 使用for…in循环来迭代对象的属性

  • 使用Map.set()方法将它们添加到一个新的Map对象中。

例子

下面是一个如何使用for…in循环和Map()构造函数将一个普通对象转换为ES6地图的例子。

let plainObject = { "one": 1, "two": 2, "three": 3 };
let map = new Map();
for (let key in plainObject) {
   map.set(key, plainObject[key]);
}
console.log(map); 

在这种方法中,我们是在向地图循环和设置属性,这可能使这个方法的效率低于第一个方法。

然而,这种方法也适用于具有不可枚举属性的对象,以及以Symbols为键的属性。

方法3:使用Object.keys() 和Array.prototype.forEach()

在这种方法中,我们遵循下面给出的步骤

  • 我们首先使用Object.keys(obj)来获得一个对象的键值数组。

  • 然后我们使用Array.prototype.forEach()方法来遍历这些键。

  • 然后我们使用Map.set()方法将键值对添加到地图中。

例子

let plainObject = { "one": 1, "two": 2, "three": 3 };
let map = new Map();
Object.keys(plainObject).forEach(key => {
   map.set(key, plainObject[key]);
});
console.log(map);

重要的是要记住,for…in循环、Object.keys()和Array.prototype.forEach()方法都将以不同的顺序返回属性,而不是它们在原始对象中的定义方式。属性将以枚举的顺序返回。

然而,键值对会按照传递的顺序被Map()函数方法返回。

总结

根据你项目的具体要求,你可以选择最适合你的方法。请记住,如果在你的用例中顺序很重要,那么Map()构造函数方法是最好的选择;否则,其他方法也能正常工作。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

JavaScript 教程