ES6 新特性:Set 和 Map 概述

129 阅读2分钟

ES6 引入了两种新的数据结构:SetMap。这些数据结构提供了一些有用的功能,它们是 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 与普通对象不同,键可以是任何类型的值,包括对象或原始类型。
  • SetMap 保留了元素和键值对的插入顺序。

ES6 的 SetMap 为处理集合和键值对提供了更加灵活和强大的方式。理解并合理运用这些数据结构,可以帮助你更有效地管理数据集合。