一直以来,JS只能使用数组和对象来保存多个数据,缺乏像其他语言那样拥有丰富的集合类型。因此ES6新增了两种集合类型(map和set),用在不同的场景中发挥作用。其中,set用于存放不重复的数据

目录

1.set集合的创建

2.对set集合进行后续的操作

3.与数组进行交换

4.遍历


1.set集合的创建

【例1】

//方法1:创建一个没有任何内容的set集合
const s1 = new Set();
console.log(s1);
//方法2:创建一个具有初始内容的set集合,内容来自于可迭代对象每一次迭代的结果
const s2 = new Set("abcdabcd");
console.log(s2);

【结果】

2.对set集合进行后续的操作

1)add(数据):添加一个数据到set集合末尾,如果数据已存在,则不进行任何操作

2)set使用Object.is的方式来判断两个数据是否相同,但是,针对+0和-0,set认为是相等的

【例2】

const s1 = new Set();
s1.add(1);
s1.add(2);
s1.add(1);      //无效
s1.add(+0);
s1.add(-0);     //无效
console.log(s1);

【结果】

3)has(数据):判断set中是否存在对应的数据

4)delete(数据):删除匹配的数据,返回是否删除成功

5)clear():清空整个set集合

6)size:获取set集合中的元素数量,只读属性,无法重新赋值

3.与数组进行交换

【例3】数组去重

const arr = [1,3,46,75,24,66,3,46,87];
console.log('arr:',arr)
const s = new Set(arr);
const result = [...s];
console.log('去重后:',result);

【结果】

4.遍历

1)使用for-of循环

【例4】

const s1 = new Set("12345");
console.log(s1);
for (const iterator of s1) {console.log(iterator);
}

【结果】

2)使用set中的实例方法forEach

【例5】

const s1 = new Set("12345");
s1.forEach((item, index, s) => {console.log('item:',item,'index:', index,'set:', s);
})

【结果】

【注】set集合中不存在下标,因此forEach中的回调的第二个参数和第一个参数是一致的,均表示set中的每一项

set,存放不重复数据的集合类型相关推荐

  1. java list 不重复添加数据_Java--如何高效向List中存放不重复的数据(附带时间测试)...

    set不允许出现重复的值(key) List是不能存储重复数据的,而我们想利用List存储不重复的元素,一般都使用List自带的contains方法对元素进行判断,如果不包含再进行添加,但是这样太耗时 ...

  2. redis的数据结构||1) 字符串类型2) 哈希类型3) 列表类型4) 集合类型 5) 有序集合类型详解

    2. 下载安装     1. 官网:https://redis.io     2. 中文网:http://www.redis.net.cn/     3. 解压直接可以使用:         * re ...

  3. python集合类型应用场景_python学习笔记(10)--组合数据类型(集合类型)

    集合类型 集合是多个元素的无序组合,每个元素唯一,不存在相同类型,每个元素是不可变类型.用{}表示,元素间用逗号分隔.建立结合类型用{},或set函数,如果是空集合必须用set. >>&g ...

  4. 如何正确使用Commvault的重复数据删除功能

    为实现更好的重复数据消除,建议的最佳做法之一是在同一存储策略中将类似类型的文件放在一起.例如,您可以将包含数据库文件的子客户机分组到一个存储策略中,将包含常规文件的子客户机分组到另一个存储策略中. 但 ...

  5. 致远个性化之--明细表数据重复判断,并显示重复数据

    需求 有业务需求,想实现明细表的数据重复提示以及显示是哪些数据重复: 实现 1.明细表数据重复提示 明细表的数据重复提示,致远表单自带有明细表公式,可以直接进行校验以及提示:如下图: 点击表单的校验规 ...

  6. 【Python】集合类型产生KeyError异常原因及数据去重

    集合操作符 操作符及应用 描述 S|T 返回一个新集合,包括在集合S和T中的所有元素 S-T 返回一个新集合,包括在集合S但不在T中的元素 S&T 返回一个新集合,包括同时在集合S和T中的元素 ...

  7. Java使用对象使用属性过滤集合对象重复数据

    使用流Stream方式过滤对象中重复的数据-Java使用对象使用属性过滤集合对象重复数据 1.先创建一个方法工具类 private static <T> Predicate<T> ...

  8. java去重复的集合_如何去除Java中List集合中的重复数据

    1.循环list中的所有元素然后删除重复 public class duplicatRemoval { public static List removeDuplicate(List list){ f ...

  9. List集合中数据用set集合去重复,用set集合去重复数据重写了equals还是没成功!

    [用set集合去重复数据,重写equals还是不成功的问题解决思路在文章最后] 需求描述: 因业务需要,通过复杂的代码逻辑从数据库取出数据放入List集合中,涉及多次从访问数据库取出数据放入List集 ...

最新文章

  1. [转]SQL Server 2005链接字符串
  2. 日记 [2007年04月05日]QMAIL服务器回顾
  3. java和python哪个好就业2020-Python和JAVA的就业前景哪个好点?
  4. 题目1197:奇偶校验
  5. 我的总结SVN的使用
  6. Jfinal框架Modal获取属性值非常奇怪的问题
  7. java报错怎么看_IGV 哐当就不能用了,除了换台电脑还能怎么办?
  8. JS事件及其兼容用法
  9. python生成树状图_python 生成 树状结构
  10. java.rmi.UnmarshalException:errorunmarshalling return; java.lang.ClassNotFoundException的解决方法
  11. 光模块的正确安装方法和使用须知
  12. 数字信号处理2:傅里叶变换
  13. 企业软件是最难编写的软件
  14. plotly系列 | 绘制散点图组合箱线图(联合图)
  15. 新手对vue中特殊的标签属性ref和key的理解
  16. Matlab实现常见的插值算法
  17. 论文摘要翻译,多语言纯人工翻译
  18. PCL中采样一致性算法
  19. 网站端服务器返回错误8001,云服务器 http server
  20. vue项目中 路径使用的@和~的区别

热门文章

  1. _cdecl和_stdcal的区别
  2. Java8 日期/时间(Date Time)API指南
  3. 再见了kafka2.0时代,去掉了zk的kafka3.0才是时代新王!
  4. 使用VMware VSphere WebService SDK进行开发 (一)——基本信息阐述
  5. 一行代码搞定 GitHub 访问徽章
  6. LiveVideoStack线上分享第五季(十三):高性能视频硬件编码
  7. 扶凯:海量视频和用户时代的CDN
  8. 当一个美术生开始在腾讯撸代码… |「递归」第1集
  9. 企业用户福利来袭!腾讯三大研发管理产品集中亮相2018腾讯合作伙伴大会
  10. 利用nginx搭建RTMP视频点播、直播、HLS服务器