美文网首页
七、Set,Map

七、Set,Map

作者: della岳 | 来源:发表于2022-02-09 14:34 被阅读0次

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

  • 类似对象,但属性名可以是任意数据类型
  • 用法和Set一样,只是key和value不一样
  • has是否包含某个属性
  • 对象不可以 获取长度,map可以获取长度
  • 频繁键值对的增删改,Map比对象更有性能优势

相关文章

网友评论

      本文标题:七、Set,Map

      本文链接:https://www.haomeiwen.com/subject/jzibkrtx.html