在 JavaScript 中,集合(Set)是一种存储唯一值的数据结构,适用于需要去重或快速判断元素是否存在的场景。以下是 Set 的详细使用方法:
1. 创建集合- 使用构造函数创建一个空集合:const mySet = new Set();
- 通过数组初始化直接传入数组创建包含初始值的集合:const mySet = new Set([1, 2, "a", "b"]); // 集合内容:1, 2, "a", "b"
2. 操作集合元素- 添加元素使用 add() 方法,重复添加同一值会被自动忽略:mySet.add(3); // 集合内容:1, 2, "a", "b", 3mySet.add(1); // 无效,1 已存在
- 删除元素使用 delete() 方法,返回布尔值表示是否删除成功:mySet.delete("a"); // 返回 true,集合内容:1, 2, "b", 3
- 检查元素存在使用 has() 方法快速判断:console.log(mySet.has(2)); // true
- 清空集合使用 clear() 方法移除所有元素:mySet.clear(); // 集合变为空
3. 获取集合信息- 元素数量通过 size 属性获取(注意:不是方法):console.log(mySet.size); // 输出当前元素个数
4. 遍历集合- forEach() 方法遍历时回调参数为 (value, key),由于 Set 无键值对,两者值相同:mySet.forEach((value, key) => { console.log(`Value: ${value}, Key: ${key}`); // 输出如 "Value: 1, Key: 1"});
- for...of 循环直接获取每个元素的值:for (const value of mySet) { console.log(value); // 依次输出 1, 2, "b", 3}
5. 其他实用方法- entries()返回 [value, value] 形式的迭代器(兼容 Map 的 API):const iterator = mySet.entries();console.log(iterator.next().value); // [1, 1]
- keys() 和 values()两者行为相同,均返回值的迭代器:const keys = mySet.keys(); // 或 mySet.values()console.log([...keys]); // 转为数组:[1, 2, "b", 3]
6. 实际应用示例- 数组去重const arr = [1, 2, 2, 3];const uniqueArr = [...new Set(arr)]; // [1, 2, 3]
- 判断元素是否存在const tags = new Set(["js", "html", "css"]);if (tags.has("js")) { console.log("包含 JS 标签");}
注意事项- Set 使用严格相等(===)判断唯一性,但 NaN 被视为相同值。
- 对象作为元素时,比较的是引用地址而非内容。
通过以上方法,可以高效利用 Set 处理唯一值需求,如去重、快速查找等场景。