七、Set,Map

2022-02-09  本文已影响0人  della岳

Set,类似数组,但成员值都是唯一的

const s  = new Set([1,2,2,3,4])
console.log(s)//{1,2,3,4}
s.add('imooc');// 添加成员
console.log(s)//{1,2,3,4,'imooc'}
s.delete(2) //删除成员
console.log(s)//{1,3,4,'imooc'}
console.log(s.has(3))//true 是否含有某个值
console.log(s.size)//长度,成员个数
s.clear(); //清空
console.log(s)//{size:0}

1、遍历,key和value一样

s.forEach(item => console.log(item))
for(let item of s){
    console.log(item)
}
for(let item of s.keys()){
    console.log(item)
}
for(let item of s.values()){
    console.log(item)
}
for(let item of s.entries()){ 
    console.log(item)
}

2、数组去重

const arr = [1, 2, 2, 3, 3, 4];
const s = new Set(arr); //数组转为set
console.log(Array.from(s)) //1、set转为数组
console.log([...s]) //2、利用扩展运算符转为数组

3、合并去重

const arr1 = [1,2,3];
const arr2 = [2,3,5,6];
const ss =  new Set([...arr1,...arr2])
console.log(ss)
console.log(Array.from(ss)) //set转为数组
console.log([...ss]) //利用扩展运算符转

4、取两个数组的交集

let result1 = arr1.filter(item => arr2.includes(item)) 
let s1 = new Set(arr1)
let s2 = new Set(arr2)
let result2 = new Set(arr1.filter(item => s2.has(item))) //去了重的交集
console.log(result1)
console.log(result2)

5、取数组差值

const arr1 = [1,2,3];
const arr2 = [2,3,5,6];
// 1
let arr3 = arr1.filter(item => !arr2.includes(item)) 
let arr4 = arr2.filter(item => !arr1.includes(item)) 
console.log([...arr3,...arr4])
// 2
let s1 = new Set(arr1)
let s2 = new Set(arr2)
let arr3 = arr1.filter(item => !s2.has(item))
let arr4 = arr2.filter(item => !s1.has(item))
console.log([...arr3,...arr4])

weakSet存储对象,弱引用,垃圾回收机制中,不回被计数到引用次数中

Map

上一篇 下一篇

猜你喜欢

热点阅读