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

【es6复习笔记】集合Set(13)

ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了iterator接口,所以可以使用『扩展运算符』和『for…of…』进行遍历。

集合的属性和方法

  1. size:返回集合的元素个数。
  2. add(value):增加一个新元素,返回当前集合。
  3. delete(value):删除元素,返回boolean值。
  4. has(value):检测集合中是否包含某个元素,返回boolean值。
  5. clear():清空集合,返回undefined。

1. 集合的基本操作

在 JavaScript 中,集合(Set)是一种数据结构,它可以存储任意类型的唯一值。以下是一些基本操作的示例:

// 声明一个 set
let s = new Set();
let s2 = new Set(['大事儿', '小事儿', '好事儿', '坏事儿', '小事儿']);

// 元素个数
console.log(s2.size); // 输出: 5

// 添加新的元素
s2.add('喜事儿');
console.log(s2); // 输出: Set(6) {"大事儿", "小事儿", "好事儿", "坏事儿", "喜事儿"}

// 删除元素
s2.delete('坏事儿');
console.log(s2); // 输出: Set(5) {"大事儿", "小事儿", "好事儿", "喜事儿"}

// 检测
console.log(s2.has('糟心事')); // 输出: false

// 清空
s2.clear();
console.log(s2); // 输出: Set(0) {}

2. 集合的遍历

可以使用 for...of 循环来遍历集合中的元素:

for(let v of s2){
    console.log(v);
}

3. 集合的实践应用

集合在实际开发中有很多应用,例如数组去重、求交集、并集和差集等。以下是一些示例:

let arr = [1, 2, 3, 4, 5, 4, 3, 2, 1];

// 1. 数组去重
let result = [...new Set(arr)];
console.log(result); // 输出: [1, 2, 3, 4, 5]

// 2. 交集
let arr2 = [4, 5, 6, 5, 6];
let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));
console.log(result); // 输出: [4, 5]

// 3. 并集
let union = [...new Set([...arr,...arr2])];
console.log(union); // 输出: [1, 2, 3, 4, 5, 6]

// 4. 差集
let diff = [...new Set(arr)].filter(item =>!(new Set(arr2).has(item)));
console.log(diff); // 输出: [1, 2, 3]

总结

集合是一种非常有用的数据结构,它可以帮助我们快速地进行数组去重、求交集、并集和差集等操作。在实际开发中,合理使用集合可以提高代码的效率和可读性。


http://www.kler.cn/a/450936.html

相关文章:

  • Fuel库实战:下载失败时的异常处理策略
  • DX12 快速教程(2) —— 渲染天蓝色窗口
  • vue3标签中的ref属性如何使用$refs获取元素
  • window安装TradingView
  • 编译原理复习---正则表达式+有穷自动机
  • JAVA开发入门学习七- 数组
  • MongoDB 更新文档
  • Mac M1使用pip3安装报错
  • C++软件设计模式之装饰器模式
  • 创建仓颉编程语言的第一个项目
  • 【2024】Merry Christmas!一起用Rust绘制一颗圣诞树吧
  • GAMES101:现代计算机图形学入门-笔记-11
  • 数据结构与算法Python版 散列与区块链
  • 前端常用算法集合
  • HTTP—01
  • MQTT协议在树莓派上的安全性和性能测试及其在物联网应用中的应用
  • 【网络云计算】2024第52周-每日【2024/12/24】小测-理论实操-解析
  • docker 安装minio
  • SpringBoot的Thymeleaf做一个可自定义合并td的pdf表格
  • LeetCode33题:搜索旋转排序数组(原创)
  • 【VMware虚拟机】安装win10系统教程双机可ping通
  • leetcode hot100回文字符串的链表
  • 帝国CMS:如何去掉帝国CMS登录界面的认证码登录
  • 类OCSP靶场-Kioptrix系列-Kioptrix Level 5(2014)
  • GB/T34944-2017 《Java语言源代码漏洞测试规范》解读——行为问题、路径错误、处理程序错误
  • 光谱相机在农业中的具体应用案例