JavaScript系列之内置对象Map


一、概述

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^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!

猜你喜欢

转载自blog.csdn.net/weixin_62277266/article/details/128840754
今日推荐