JavaScript之Map方法属性

本文最后更新于 2025年8月20日 晚上

参考:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Weakmap

字典构造函数

1
Map();

Map()

Map() 构造函数用于创建并返回一个 Map 对象,需要与 new 关键字配合使用。

Object 只能用 String 和 Symbol 当属性名,结构是“字符串或符号—值”;Map 各种类型的值都可以当作属性名,结构是“值—值”。若需要“键值对”的数据结构,Map 比 Object 更合适。此外,两者都是属性名不能重复,属性值可以重复,且属性名无序。

接收一个参数:

  • iterable(可选):可以是一个数组或其他可迭代对象,其元素为键值对(如两个元素的数组等)。每个键值对都会被添加到新的 Map 中,null 会被当做 undefined。
1
2
3
4
5
6
let myMap = new Map([
[1, "one"],
[2, "two"],
[3, "three"],
]);
console.log(myMap); // {1 => 'one', 2 => 'two', 3 => 'three'}

字典实例属性

1
Map.prototype.size;

size

size 属性用于返回 Map 对象的成员数量,不可以设置该属性来改变 Map 对象的成员数量。

字典实例方法

1
2
3
4
5
6
7
8
9
Map.prototype.set();
Map.prototype.get();
Map.prototype.has();
Map.prototype.delete();
Map.prototype.clear();
Map.prototype.keys();
Map.prototype.values();
Map.prototype.entries();
Map.prototype.forEach();

set()

set() 方法用于为 Map 对象添加或更新一个键值对,返回 Map 对象本身。

get()

get() 方法用于获取 Map 对象中指定键的值并返回,如果找不到这个键则返回 undefined。

has()

has() 方法用于判断 Map 对象中是否存在指定键,返回布尔值。

delete()

delete() 方法用于移除 Map 对象中指定的键和其值,返回布尔值。

1
2
3
const map1 = new Map();
map1.set("bar", "foo");
map1.delete("bar"); // true

clear()

clear() 方法用于移除 Map 对象中的所有键值对,返回 undefined。

1
2
3
4
const map1 = new Map();
map1.set("bar", "baz");
map1.set(1, "foo");
map1.clear(); // undefined

keys()

keys() 方法返回一个新的 Iterator 对象。它包含按照顺序插入 Map 对象中每个元素的 key 值。

1
2
3
4
5
6
7
const myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");

for (const key of myMap.keys()) console.log(key);
// 0
// 1

values()

values() 方法返回一个新的 Iterator 对象。它包含按照顺序插入 Map 对象中每个元素的 value 值。

1
2
3
4
5
6
7
const myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");

for (const value of myMap.values()) console.log(value);
// zero
// one

entries()

entries() 方法返回一个新的包含 [key, value] 对的 Iterator 对象,返回的迭代器中的迭代顺序与 Map 对象的插入顺序相同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");

for (const i of myMap) console.log(i);
// [0, 'zero']
// [1, 'one']

for (const [key, value] of myMap) console.log(key, value);
// 0 'zero'
// 1 'one'

for (const [key, value] of myMap.entries()) console.log(key, value);
// 0 'zero'
// 1 'one'

forEach()

forEach() 方法按照插入顺序依次对 Map 中每个键值对执行一次给定的回调函数,返回值为 undefined。

接收两个参数:

  • callback(必需):回调函数。
    • value(可选),每个迭代的值
    • key(可选),每个迭代的键
    • map(可选),被迭代的 Map 对象
  • thisArg(可选):执行回调函数时 this 绑定对象的值。默认值为 undefined。
1
2
3
4
5
6
7
const myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");

myMap.forEach((value, key) => console.log(key, value));
// 0 'zero'
// 1 'one'

弱字典构造函数

1
WeakMap();

WeakMap()

WeakMap() 构造函数用于创建并返回一个 WeakMap 对象,需要与 new 关键字配合使用。

注意,WeakMap 对象的键只能是 Object 类型,原始数据类型是不能作为键的,值的类型没有限制。

接收一个参数:

  • iterable(可选):是一个数组(二元数组)或其他可迭代的且其元素是键值对的对象。 每个键值对都会添加到新的 WeakMap。null 会被当做 undefined。
1
2
3
4
5
6
let myMap = new WeakMap([
[{}, "one"],
[{}, "two"],
[{}, "three"],
]);
console.log(myMap); // {{…} => 'three', {…} => 'one', {…} => 'two'}

弱字典实例方法

1
2
3
4
WeakMap.prototype.set();
WeakMap.prototype.get();
WeakMap.prototype.has();
WeakMap.prototype.delete();

set()

set() 方法用于为 WeakMap 对象添加或更新一个键值对,返回 WeakMap 对象本身。

get()

get() 方法用于获取 WeakMap 对象中指定键的值并返回,如果找不到这个键则返回 undefined。

has()

has() 方法用于判断 WeakMap 对象中是否存在指定键,返回布尔值。

delete()

delete() 方法用于移除 WeakMap 对象中指定的键和其值,返回布尔值。


JavaScript之Map方法属性
https://xuekeven.github.io/2021/09/09/JavaScript之Map方法属性/
作者
Keven
发布于
2021年9月9日
更新于
2025年8月20日
许可协议