举例说明什么是JavaScript中的地图对象?

134 阅读4分钟

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中地图对象的不同方法和属性。