JavaScript是一种编程语言,它使网络应用程序和网页具有思考和行动的能力,使它们具有动态和互动性。当你在编程时,经常会对使用哪种数据结构来存储数据感到困惑,因为这些数据容易被管理和理解。为了保存数据的集合,数组和对象是常用的数据结构。键值对被存储在对象中,而索引列表被存储在数组中。然后,ECMAScript 2015引入了另一个可迭代的对象,即地图,为开发者提供了更多的灵活性。因此,在这篇文章中,我们将讨论什么是JavaScript中的地图对象,并讨论一些实际的例子,以及输出的截图。
什么是地图对象?
地图对象和普通的对象一样,是一个存储键值对的元素集合;但是,主要的区别在于,键值可以是任何类型。还应注意的是,地图对象会记住插入地图对象中的键值对的顺序。
语法
var map = new Map([it]);
其中it是可选的,是一个可迭代的对象,其元素被存储为键值对。
地图对象有一些属性和方法,定义如下:
- 创建新地图 -> 新地图()
- 使用一个键来存储一个值 -> map.set(key, value)
- 获取键的值 -> map.get(key)
- 如果键不存在,那么map.get(key)将返回未定义。
- 要从地图上删除所有的东西--> map.clear()
- 获取地图的大小 -> map.size
- 使用键来删除一个值 -> map.delete(key)
地图对象实例1
在下面的代码中,首先,我们启动了地图对象,然后设置值。我们设置的第一个键是一个字符串键,第二个是一个数字键,第三个是一个布尔值键。然后我们在控制台记录下获取所提供的键值的结果。我们还检查map对象的大小,返回3。
// map creation
var map = new Map();
// setting key value pairs to map
map.set('1', 'string'); // a string key
map.set(1, 'number'); // a numeric key
map.set(true, 'boolean'); // a boolean key
//get info from map
console.log( map.get(1) ); // number
console.log( map.get('1') ); // string
console.log(map.size); // 3

地图对象示例2
我们也可以将地图对象的键设置为对象。让我们在下面给出的代码的帮助下演示一下。
var student1 = { name: "Jhon" };
// for every student, let's store their marks
var marks = new Map();
// student1 is the key for the map and student 1 itself is an object
marks.set(student1, 93);
console.log( marks.get(student1) ); // 93
在上面的例子中,我们首先启动了一个名称为student1的对象,然后创建了一个地图对象。之后,我们设置了student1的分数,然后在控制台记录student1的分数。应该注意的是,student1本身是一个对象,但在这里充当了钥匙。我们得到的输出是93,如下图所示。

迭代地图键
现在让我们看看如何迭代地图的键值,为此我们将使用for循环和map.key()方法。map.key()方法将按照地图对象中插入的顺序返回地图对象的所有键。
让我们启动一个地图对象,给名字作为键,给值作为工作位置。然后我们实现了一个for循环,它将控制台记录地图对象中的所有键/名字。
// creating map object
var employees = new Map([
["john", 'admin'],
["Sarah", 'editor'],
["Sam", 'writer']
]);
// for loop
for (var name of employees.keys()) {
console.log(name);
}
上述代码的输出是

为了迭代地图值,我们将简单地把employees.keys()改为employees.values()。
// creating map object
var employees = new Map([ ["john", 'admin'],
["Sarah", 'editor'],
["Sam", 'writer']
]);
// for loop
for (var position of employees.values()) {
console.log(position);
}

使用键删除元素
在这个例子中,我们将使用delete()方法删除地图对象中的一个条目。
// creating map object
var employees = new Map([
["john", 'admin'],
["Sarah", 'editor'],
["Sam", 'writer']
]);
// deleting john from employees
employees.delete("john");
// for loop
for (var name of employees.keys()) {
console.log(name);
}
我们可以看到,约翰 已经被删除,并从输出中消失。

结论
地图对象是在ES6中引入的,在地图对象之前,使用的是普通对象。然而,对象有一些不足之处,比如对象总是有一个默认的键的原型,人们不能使用一个对象作为键。为了解决这个问题,引入了map,它是一个以键值对存储的元素集合,就像对象一样,但这里的键可以是任何类型。在这篇文章中,我们看到了JavaScript中的map对象并讨论了两个例子。除此以外,我们还实现并观察了JavaScript中地图对象的不同方法和属性。