new Set()的基础用法(ES6)

new Set()的基础用法(ES6)1 什么是 Set 似于数组 但它的一大特性就是所有元素都是唯一的 没有重复 我们可以利用这一唯一特性进行数组的去重工作 2 常用方法 2 1 添加元素 与对象添加元素一致 Object key value letlist newSet list add 1 2 2 删除元素 deleteletlis newSet 1 20 30 40 list delete 30 删除值为 30 的元素 这里的 30 并非下标 2 3 判断某元素是否存在 haslet

1、什么是Set()

Set是es6新增的数据结构,似于数组,但它的一大特性就是所有元素都是唯一的,没有重复的值,我们一般称为集合。

Set本身是一个构造函数,用来生成 Set 数据结构

2、增删改查方法

2.1 添加元素add

添加某个值,返回 Set 结构本身,当添加实例中已经存在的元素,set不会进行处理添加

let list=new Set(); list.add(1) list.add(2).add(3).add(3) // 2只被添加了一次 
2.2 删除元素 delete

删除某个值,返回一个布尔值,表示删除是否成功

let list=new Set([1,20,30,40]) list.delete(30) //删除值为30的元素,这里的30并非下标 
2.3 判断某元素是否存在has

返回一个布尔值,判断该值是否为Set的成员

let list=new Set([1,2,3,4]) list.has(2)//true 
2.4 清除所有元素clear

清除所有成员,没有返回值

let list=new Set([1,2,3,4]) list.clear() 

3、遍历方法

3.1 遍历 keys()

返回键名的遍历器,相等于返回键值遍历器values()

let list2=new Set(['a','b','c']) for(let key of list2.keys()){ console.log(key)//a,b,c } 
3.2 遍历 values()

返回键值的遍历器

let list=new Set(['a','b','c']) for(let value of list.values()){ console.log(value)//a,b,c } 
3.3 遍历 entries()

返回键值对的遍历器

let list=new Set(['4','5','hello']) for (let item of list.entries()) { console.log(item); } // ['4','4'] ['5','5'] ['hello','hello'] 
3.4 遍历 forEach()

使用回调函数遍历每个成员

let list=new Set(['4','5','hello']) list.forEach((value, key) => console.log(key + ' : ' + value)) // 4:4 5:5 hello:hello 

4、使用情形

4.1 用于数组去重
let arr = [3, 5, 2, 2, 5, 5]; let setArr = new Set(arr) // 返回set数据结构 Set(3) {3, 5, 2} //方法一 es6的...解构 let unique1 = [...setArr ]; //去重转数组后 [3,5,2] //方法二 Array.from()解析类数组为数组 let unique2 = Array.from(setArr ) //去重转数组后 [3,5,2] 
4.2 用于字符串去重
let str = ""; let unique = [...new Set(str)].join(""); // 352  
4.3 实现并集、交集、和差集
let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); // 并集 let union = new Set([...a, ...b]); // Set {1, 2, 3, 4} // 交集 let intersect = new Set([...a].filter(x => b.has(x))); // set {2, 3} // (a 相对于 b 的)差集 let difference = new Set([...a].filter(x => !b.has(x))); // Set {1} 

参考链接 https://blog.csdn.net/_/article/details/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199111.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午1:49
下一篇 2026年3月26日 下午1:50


相关推荐

  • Vue下路由History mode导致页面无法渲染的原因

    Vue下路由History mode导致页面无法渲染的原因

    2021年10月13日
    46
  • js动画事件_JavaScript事件

    js动画事件_JavaScript事件js之动画事件首先,动画事件主要包括以下三个animationstart,animationiteration和animationend事件,下面做简单分别介绍。animationstart该事件在css动画开始播放时触发animationiteration该事件在css动画重新播放时触发animationend该事件在css动画结束播放时触发我们知道animation主要有6个属性,分别来设置动画呈现出来哦的效果,这个在我的另一篇文章中有介绍,我这边简单展示一下。

    2022年10月10日
    4
  • sql 存储过程中何时使用declare声明变量[通俗易懂]

    sql 存储过程中何时使用declare声明变量[通俗易懂]这个问题我从百度第二页才找得到答案,就从别人的答案自己仔细研究懂了,顺便整理了过来。原文链接:https://zhidao.baidu.com/question/245490659799230284.html如果把存储过程看作是批处理语句就好理解多了存储过程只不过是一个带着名称的SQL批处理语句,如果在整个过程中需要变量时就是可以声明,但该变量声明后只能存活在批处理(存储过程)的…

    2022年8月20日
    7
  • luajit ffi 小结

    luajit ffi 小结Luajitffi 接口使用小结 1 使用 Luajitffi 加载 C 链接库 2 使用 Luajitffi 调用 C 函数 3 使用 Luajitffi 处理基本类型对象 结构体对象 字符串对象 cdata4 cdata 赋值及修改本文仅限于使用 C 链接库 后面文章将介绍使用 Luajitffi 加载 C 链接库

    2026年3月18日
    2
  • socket协议介绍

    socket协议介绍2019 独角兽企业重金招聘 Python 工程师标准 gt gt gt

    2026年3月17日
    2
  • Mysql及SQLyog安装教程

    Mysql及SQLyog安装教程换电脑每次都需要重装一些软件真是崩溃瞬间 总结整理 Mysql 及 SQLyog 安装供大家参考 一起学习新技能叭 1 首先下载安装包链接 https pan baidu com s 1UfEDmjfYDxu 5MA 提取码 4j6h2 安装 mysql 一直选择默认的即可 注意 里面需要设置用户名及密码 这个一定要自己记得 可以使用 mysql 1234 方便记忆 检查 以管理员身份 这个很重要 运行命令提示符 输入 netstopmysql netstartm

    2026年3月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号