当前位置: 首页 > web >正文

js中 new Set()实例的各个api使用

在JavaScript中,Set 是一种存储唯一值的数据结构,类似于数组但成员值都是唯一的。下面详细介绍 Set 实例的各个API及其使用方法:

1. 创建 Set 实例

// 创建空Set
const emptySet = new Set();// 从数组初始化Set(自动去重)
const setFromArray = new Set([1, 2, 2, 3, 'a', 'a']); // Set {1, 2, 3, 'a'}// 从字符串初始化Set(按字符拆分)
const setFromString = new Set('hello'); // Set {'h', 'e', 'l', 'o'}

2. 添加元素:add(value)

  • 作用:向Set中添加一个新元素,如果元素已存在则忽略。
  • 返回值:返回Set实例本身(可链式调用)。
const mySet = new Set();
mySet.add(1);        // Set {1}
mySet.add(2).add(3); // Set {1, 2, 3}
mySet.add(2);        // 重复元素,Set不变:{1, 2, 3}

3. 删除元素:delete(value)

  • 作用:删除Set中指定的元素。
  • 返回值:删除成功返回 true,失败(元素不存在)返回 false
const mySet = new Set([1, 2, 3]);
mySet.delete(2); // true,Set变为 {1, 3}
mySet.delete(4); // false,元素不存在

4. 判断元素是否存在:has(value)

  • 作用:检查Set中是否存在指定元素。
  • 返回值:存在返回 true,否则返回 false
const mySet = new Set([1, 'a']);
mySet.has(1);    // true
mySet.has('a');  // true
mySet.has('b');  // false

5. 获取元素数量:size

  • 作用:返回Set中元素的个数(只读属性)。
const mySet = new Set([1, 2, 3]);
console.log(mySet.size); // 3

6. 清空Set:clear()

  • 作用:移除Set中的所有元素。
const mySet = new Set([1, 2, 3]);
mySet.clear();
console.log(mySet.size); // 0

7. 遍历Set

7.1 keys()values()entries()
  • keys():返回一个包含所有键的迭代器(Set中键和值相同)。
  • values():返回一个包含所有值的迭代器(与 keys() 相同)。
  • entries():返回一个包含 [value, value] 数组的迭代器(为了与Map兼容)。
const mySet = new Set(['a', 'b', 'c']);// keys() 和 values()
const keys = mySet.keys();     // SetIterator {'a', 'b', 'c'}
const values = mySet.values(); // SetIterator {'a', 'b', 'c'}// entries()
const entries = mySet.entries(); 
// SetIterator {['a', 'a'], ['b', 'b'], ['c', 'c']}
7.2 forEach(callback[, thisArg])
  • 作用:遍历Set并对每个元素执行回调函数。
const mySet = new Set([1, 2, 3]);
mySet.forEach((value, key, set) => {console.log(value, key, set === mySet);
});
// 输出:
// 1 1 true
// 2 2 true
// 3 3 true
7.3 for...of 循环
const mySet = new Set([1, 2, 3]);
for (const value of mySet) {console.log(value); // 1, 2, 3
}

8. 转换为数组

使用扩展运算符(...)或 Array.from() 将Set转换为数组:

const mySet = new Set([1, 2, 3]);
const arr1 = [...mySet];       // [1, 2, 3]
const arr2 = Array.from(mySet); // [1, 2, 3]

9. 实用技巧

9.1 数组去重
const arr = [1, 2, 2, 3, 3, 3];
const uniqueArr = [...new Set(arr)]; // [1, 2, 3]
9.2 集合运算
// 并集
const union = new Set([...setA, ...setB]);// 交集
const intersection = new Set([...setA].filter(x => setB.has(x)));// 差集
const difference = new Set([...setA].filter(x => !setB.has(x)));

10. 注意事项

  1. 值的唯一性

    • 基本类型(如 1'1')会被视为不同值。
    • 对象引用需指向同一对象才被视为相同:
      const set = new Set();
      set.add({}); // 添加一个空对象
      set.add({}); // 再次添加空对象(引用不同)
      console.log(set.size); // 2
      
  2. 迭代顺序:Set中的元素按插入顺序迭代。

  3. 兼容性:IE11及以下版本不完全支持Set,需使用polyfill。

通过这些API,Set提供了高效的唯一值存储和快速查找能力,适用于去重、集合运算等场景。

http://www.xdnf.cn/news/15828.html

相关文章:

  • Java学习------ConcurrentHashMap
  • Honeywell霍尼韦尔DV-10 变速器放大器 输入 15-28 VDC,输出 +/- 10VDC 060-6881-02
  • 【53】MFC入门到精通——MFC串口助手(二)---通信版(发送数据 、发送文件、数据转换、清空发送区、打开/关闭文件),附源码
  • 软件维护全维度解析:从修复到进化的生命周期管理
  • mave手动下载某个依赖,到本地库
  • IP协议深入理解
  • C语言实战:超级玛丽游戏
  • 组件-多行文本省略-展开收起
  • 百炼MCP与IoT实战(三):手搓自定义MCP Server与阿里云FC配置
  • 40+个常用的Linux指令——上
  • halcon模版匹配方向的研究
  • ts学习2
  • 飞算科技:以创新科技引领数字化变革,旗下飞算 JavaAI 成开发利器
  • 人脸检测算法——SCRFD
  • 可靠消息最终一致性分布式事务解决方案
  • 基础密码协议
  • Xilinx Zynq:一款适用于软件定义无线电的现代片上系统
  • 代理模式及优化
  • 手撕Spring底层系列之:Bean的生命周期
  • C++进阶-红黑树(难度较高)
  • Docker报错:No address associated with hostname
  • 广东省省考备考(第四十九天7.18)——判断推理:位置规律(听课后强化训练)
  • 深度学习×第10卷:她用一块小滤镜,在图像中找到你
  • 基于 WinForm 与虹软实现人脸识别功能:从理论到实践
  • 洛谷 P1395 会议
  • 周志华《机器学习导论》第9章 聚类
  • Linux基本操作
  • Linux内核设计与实现 - 第3章:Linux的进程
  • 使用python读取json数据,简单的处理成元组数组
  • 2026python实战——如何利用海外代理ip爬取海外数据