JavaScript 中的 Map 和 Set 对象是 ES6 引入的两个重要数据结构,它们提供了更灵活和高效的方式来存储和管理数据。接下来,我将详细介绍这两个对象,并给出一些代码示例。
一、Map 对象
Map 是一种键值对的集合,其中每个键都与一个值相对应。与普通对象不同,Map 允许使用任何类型的值(包括对象和函数)作为键。Map 的插入顺序也会被记住,遍历时可以按照插入的顺序依次访问每一个元素。
创建 Map
要创建一个 Map,我们可以使用其构造函数:
let map = new Map();
我们也可以传入一个可迭代对象来初始化:
let map2 = new Map([
['name', 'Tom'],
['age', 25],
['gender', 'male']
]);
操作 Map
Map 有几个常用的方法:
set(key, value)
:添加一个新元素或更新一个已存在的元素。get(key)
:返回与键对应的值,如果键不存在则返回 undefined。has(key)
:检查 Map 是否包含特定的键,返回布尔值。delete(key)
:删除 Map 中指定的键及其对应的值。clear()
:清空 Map 中的所有元素。size
:返回 Map 中元素的数量。
以下是一个简单的示例:
let map = new Map();
map.set('name', 'Tom');
map.set('age', 25);
console.log(map.get('name')); // 输出: Tom
console.log(map.size); // 输出: 2
map.delete('age');
console.log(map.has('age')); // 输出: false
console.log(map.size); // 输出: 1
map.clear();
console.log(map.size); // 输出: 0
遍历 Map
我们可以使用 for...of
循环来遍历 Map。Node 的插入顺序会被保留,这使得遍历的顺序与添加的顺序一致:
let map = new Map([
['name', 'Tom'],
['age', 25],
['gender', 'male']
]);
for (let [key, value] of map) {
console.log(`${key}: ${value}`);
}
// 输出:
// name: Tom
// age: 25
// gender: male
二、Set 对象
Set 是一种值的集合,其中每个值都是唯一的,不会重复。与 Map 类似,Set 也记录了元素的插入顺序。
创建 Set
创建 Set 非常简单:
let set = new Set();
我们也可以用一个可迭代对象初始化 Set:
let set2 = new Set([1, 2, 3, 4, 5, 2]); // 2 将被忽略
操作 Set
Set 的常用方法:
add(value)
:向 Set 中添加一个新元素。delete(value)
:从 Set 中删除指定的元素。has(value)
:检查 Set 是否包含特定的值。clear()
:清空 Set 中的所有元素。size
:返回 Set 中元素的数量。
以下是一个示例:
let set = new Set();
set.add(1);
set.add(2);
set.add(2); // 此时不会重复添加
console.log(set.size); // 输出: 2
set.delete(1);
console.log(set.has(1)); // 输出: false
console.log(set.size); // 输出: 1
set.clear();
console.log(set.size); // 输出: 0
遍历 Set
Set 也可以使用 for...of
循环来遍历:
let set = new Set([1, 2, 3, 4, 5]);
for (let value of set) {
console.log(value);
}
// 输出:
// 1
// 2
// 3
// 4
// 5
总结
Map 和 Set 是 JavaScript 中非常有用的数据结构。Map 更适合需要高效查找的场景,而 Set 则是存储唯一值的重要工具。它们的灵活性和便利性大大提升了数据管理的效率,适用于多种应用场景。在编程中合理使用这两种数据结构,可以使代码更简洁、可读和高效。