ES6 引入了两种新的数据结构:Set 和 Map。这些数据结构提供了一些有用的功能,它们是 JavaScript 语言中对集合和字典类型的实现。
Set
Set 是一种新的集合类型,它允许你存储唯一值,无论这个值是原始值还是对象引用。
创建 Set
let mySet = new Set();
mySet.add(1);
mySet.add(5);
mySet.add(5); // 重复的值不会被添加
mySet.add('some text');
let o = {a: 1, b: 2};
mySet.add(o);
Set 常用方法
add(value):添加一个新的值。delete(value):删除一个值。has(value):判断是否包含某个值。clear():清空集合。size:返回 Set 的元素个数。
遍历 Set
for (let item of mySet) console.log(item);
// 或者
mySet.forEach((value) => {
console.log(value);
});
Map
Map 是键值对的集合,类似于对象,但键的范围不限于字符串,可以是任意值。
创建 Map
let myMap = new Map();
let keyString = 'a string',
keyObj = {},
keyFunc = function() {};
// 设置值
myMap.set(keyString, "与字符串关联");
myMap.set(keyObj, "与对象关联");
myMap.set(keyFunc, "与函数关联");
Map 常用方法
set(key, value):设置 Map 对象中键的值。get(key):读取键对应的值,如果不存在,则返回undefined。has(key):判断是否有某个键。delete(key):删除某个键。clear():清空 Map。size:返回 Map 的元素个数。
遍历 Map
for (let [key, value] of myMap) {
console.log(`${key}: ${value}`);
}
// 或者
myMap.forEach((value, key) => {
console.log(`${key}: ${value}`);
});
使用场景
- Set:当你需要存储一个唯一值列表时,比如用户 ID 列表、待处理项目的集合等。
- Map:适用于需要键值对数据结构的场景,尤其是当键不仅限于字符串时。
注意事项
Set中的元素总是唯一的。Map与普通对象不同,键可以是任何类型的值,包括对象或原始类型。Set和Map保留了元素和键值对的插入顺序。
ES6 的 Set 和 Map 为处理集合和键值对提供了更加灵活和强大的方式。理解并合理运用这些数据结构,可以帮助你更有效地管理数据集合。