new Set() 用法+拓展

JS2 查找重复元素

1. Set 是es6新增的数据结构,类似于数组,他的一大特性就是所有元素都是唯一的,没有重复的值,我们称为集合。 let a = new Set([1, 2, 3]);    =>Set(3) {1, 2, 3}

可以理解他是键名和键值一样的Key-value形式

let list = new Set()

1、增加元素  add():list.add(1)

同样的值只会被添加一次

2、删除元素 delete():list.delete(30)

直接删除值为30的元素,不是下标

3、是否存在 has():list.has(2) //true

返回一个布尔值,判断2是否是list Set 里面的成员

4、清除所有元素 clear():list.clear()

5、遍历方法 keys():list.keys()

返回键名

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

 6、遍历方法 values():list.values()

返回键值

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

 7、遍历方法 entries():list.entries()

返回键值对的遍历器

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

  遍历方法 forEach():list.forEach((value, key) => console.log(key + ' : ' + value))

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

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

数据去重大法

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]

【拓】三个点...叫做拓展运算符,是ES6中新增的内容,它可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开,还可以在构造字面量对象时将对象表达式按照key-value的方式展开。

字面量一般指[1,2,3]或者{name:'chuichui'}这种简洁的构造方式,多层嵌套的数组和对象三个点就无能为力了

大白话:...就是把不管是数组的[],还是对象的{},全部干掉。变成最简介的。

可以用在(数组、对象)复制、合并、字符转数组、函数传参方式等。(如果是字符串,会拆成单个字符)

例子:

// 数组
var number = [1,2,3,4,5,6]
console.log(...number) //1 2 3 4 5 6
//对象
var man = {name:'chuichui',height:176}
console.log({...man}) / {name:'chuichui',height:176}

 2、字符串去重

let str = "352255";
let unique = [...new Set(str)].join("");     // 352 

【拓】 .join() ,把数组中的所有元素转换为一个字符串

上面的例子中,new Set(str)=》{3,5,2},所以...{3,5,2}=》3,5,2  所以[3,5,2].join("")=》352

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}

 【拓】filter()  用于对数组进行过滤 

[].filter(x=>b.has(x))  =》[2,3]

b.has(x)  是set对象的方法之一,has()直接判断是否有这个值

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【...new Set】是一种将Set对象转换为数组的常用方法。通过使用扩展运算符(...)和新建一个Set对象,我们可以将Set对象中的唯一值提取出来并以数组的形式返回。这个方法常用于数组去重,可以快速、简洁地去除重复的元素。例如,使用【...new Set(arr)】可以将一个数组【arr】中的重复元素去除,并返回一个只包含唯一值的新数组。同样地,它也可以用于字符串去重,可以将一个字符串中的重复字符去除,并返回一个由唯一字符组成的新字符串。【1】【2】【3】<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [new Set() 用法+拓展](https://blog.csdn.net/weixin_44251670/article/details/123735625)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [ES6基础之——[...new Set()]](https://blog.csdn.net/qq_42363090/article/details/108467633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值