文章の目录
一、概述
Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象
或者基本类型
)都可以作为一个键或一个值。
二、构造函数
Map()
构造函数创建 Map 对象。
1、语法
new Map()
new Map(iterable)
2、参数
- iterable:一个元素是键值对的数组或其它可迭代 对象。(例如,包含两个元素的数组,如
[[1,'one'],[2, 'two']]
。)每个键值对都被添加到新的 Map 中。
3、示例
创建一个新的 Map
const myMap = new Map([
[1, "one"],
[2, "two"],
[3, "three"]
]);
三、实例属性
1、Map.prototype.size
size 是可访问属性,返回 Map 对象的成员数量。
四、实例方法
1、Map.prototype.clear()
clear() 方法会移除 Map 对象中的所有元素。
1.1、语法
clear()
1.2、返回值
undefined
1.3、示例
使用 clear()
const myMap = new Map();
myMap.set("bar", "baz");
myMap.set(1, "foo");
console.log(myMap.size); // 2
console.log(myMap.has("bar")); // true
myMap.clear();
console.log(myMap.size); // 0
console.log(myMap.has("bar")); // false
2、Map.prototype.delete()
delete() 方法用于移除 Map 对象中指定的元素。
2.1、语法
delete(key)
2.2、参数
- key:要从 Map 对象中删除的元素的键。
2.3、返回值
如果 Map 对象中的元素存在并已被移除,则为 true;如果该元素不存在,则为 false。
2.4、示例
const myMap = new Map();
myMap.set("bar", "foo");
console.log(myMap.delete("bar")); // 返回 true。成功地移除元素
console.log(myMap.has("bar")); // 返回 false。"bar" 元素将不再存在于 Map 实例中
3、Map.prototype.get()
get() 方法从 Map 对象返回指定的元素。如果与所提供的键相关联的值是一个对象,那么你将获得该对象的引用,对该对象所做的任何更改都会有效地在 Map 对象中修改它。
3.1、语法
get(key)
3.2、参数
- key:从 Map 对象返回的元素的键。
3.3、返回值
与指定键相关联的元素,如果键在 Map 对象中找不到,则返回 undefined
。
3.4、示例
const myMap = new Map();
myMap.set("bar", "foo");
console.log(myMap.get("bar")); // 返回 "foo"
console.log(myMap.get("baz")); // 返回 undefined
4、Map.prototype.has()
has() 方法返回一个布尔值,指示具有指定键的元素是否存在。
4.1、语法
has(key)
4.2、参数
- key:用于测试 Map 对象中是否存在的元素的键。
4.3、返回值
如果 Map 对象中存在具有指定键的元素,则返回 true;否则返回 false。
4.4、示例
const myMap = new Map();
myMap.set("bar", "foo");
console.log(myMap.has("bar")); // true
console.log(myMap.has("baz")); // false
5、Map.prototype.set()
set() 方法为 Map 对象添加或更新一个指定了键(key)和值(value)的(新)键值对。
5.1、语法
set(key, value)
5.2、参数
-
key
要添加到 Map 对象的元素的键。该值可以是任何数据类型(任何原始值或任何类型的对象)。 -
value
要添加到 Map 对象的元素的值。该值可以是任何数据类型(任何原始值或任何类型的对象)。
5.3、返回值
Map 对象
5.4、示例
使用 set()
const myMap = new Map();
// 将一个新元素添加到 Map 对象
myMap.set("bar", "foo");
myMap.set(1, "foobar");
// 在 Map 对象中更新某个元素的值
myMap.set("bar", "baz");
链式使用 set()
因为 set() 方法返回 Map 对象本身,所以你可以像下面这样链式调用它:
// 链式调用添加元素
myMap.set("bar", "foo").set(1, "foobar").set(2, "baz");
6、Map.prototype.keys()
keys() 返回一个引用的迭代器对象。它包含按照顺序插入 Map 对象中每个元素的 key 值。
6.1、语法
keys()
6.2、返回值
一个新的 Map 迭代器对象。
6.3、示例
使用 keys()
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({
}, "baz");
const mapIter = myMap.keys();
console.log(mapIter.next().value); // "0"
console.log(mapIter.next().value); // 1
console.log(mapIter.next().value); // Object
7、Map.prototype.values()
values() 方法返回一个新的迭代器对象。它包含按顺序插入 Map 对象中每个元素的 value 值。
7.1、语法
values()
7.2、返回值
一个新的 Map 可迭代对象。
7.3、示例
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({
}, "baz");
const mapIter = myMap.values();
console.log(mapIter.next().value); // "foo"
console.log(mapIter.next().value); // "bar"
console.log(mapIter.next().value); // "baz"
8、Map.prototype.entries()
entries() 方法返回一个新的迭代器对象,其中包含 Map 对象中按插入顺序排列的每个元素的 [key, value] 对。在这种情况下,这个迭代器对象也是一个可迭代对象,因此可以使用 for-of 循环。当使用 [Symbol.iterator] 时,它返回一个函数,该函数在调用时返回迭代器本身。
8.1、语法
entries()
8.2、返回值
一个新的 Map 迭代器对象。
8.3、示例
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({
}, "baz");
const mapIter = myMap.entries();
console.log(mapIter.next().value); // ["0", "foo"]
console.log(mapIter.next().value); // [1, "bar"]
console.log(mapIter.next().value); // [Object, "baz"]
9、Map.prototype.forEach()
forEach() 方法按照插入顺序依次对 Map 中每个键/值对执行一次给定的函数。
9.1、语法
// 箭头函数
forEach(() => {
/* … */ } )
forEach((value) => {
/* … */ } )
forEach((value, key) => {
/* … */ } )
forEach((value, key, map) => {
/* … */ } )
// 回调函数
forEach(callbackFn)
forEach(callbackFn, thisArg)
// 内联回调函数
forEach(function() {
/* … */ })
forEach(function(value) {
/* … */ })
forEach(function(value, key) {
/* … */ })
forEach(function(value, key, map) {
/* … */ })
forEach(function(value, key, map) {
/* … */ }, thisArg)
9.2、参数
-
callbackFn
Map 中每个元素所要执行的函数。它具有如下的参数: -
value 【可选】
每个迭代的值。 -
key 【可选】
每个迭代的键。 -
map 【可选】
正在迭代的 Map。 -
thisArg 【可选】
在 callbackFn 执行中使用的 this 的值。
9.3、返回值
undefined
9.4、示例
输出一个 Map 对象中的内容
以下的代码在每行中打印一个 Map 对象中的元素:
function logMapElements(value, key, map) {
console.log(`map.get('${
key}') = ${
value}`);
}
new Map([
["foo", 3],
["bar", {
}],
["baz", undefined]
]).forEach(logMapElements);
// logs:
// "map.get('foo') = 3"
// "map.get('bar') = [object Object]"
// "map.get('baz') = undefined"
写在最后
如果你感觉文章不咋地
//(ㄒoㄒ)//
,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L;~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※
!!!