集合

  • 无序且唯一的数据结构
  • Es6 有集合名为set
  • set 常用的操作:去重,判断某元素是否在集合中,求交集

去重

  1. const arr1 = [1,1,2,2];
  2. const arr2 = [...new Set(arr1)]

判断元素是否在集合中

  1. const arr1 = [1,1,2,2];
  2. const set = new Set(arr1);
  3. const has = set.has(3);
  4. console.log('has');
  5. console.log(has)//false

求交集&&差集

  1. const arr1 = [1,1,2,2];
  2. const set = new Set(arr1);
  3. const set2 = new Set([2,3]);
  4. const theSame = [...set].filter((item)=>{
  5. set2.has(item)
  6. })
  7. const deferent = [...set].filter((item)=>{
  8. !set2.has(item)
  9. })
  10. console.log('theSam1');
  11. console.log(theSame);
  12. console.log('deferent');
  13. console.log(deferent)
  1. const arr1 = [1,1,2,2];
  2. const set = new Set(arr1);
  3. const set2 = new Set([2,3]);
  4. const set3 = [...set].filter((item)=>{
  5. set2.has(item)
  6. })

set操作

使用Set对象:New add delete has size

迭代Set:多种迭代方法,set与array互转,求交集/差集

add (set对象里面添加元素)

  1. let mySet = new Set();
  2. mySet.add(1);
  3. mySet.add(2);
  4. mySet.add(2);
  5. console.log(mySet);//{1,2}
  6. let o = {a:1,b:2,c:3}
  7. mySet.add(o);
  8. console.log(mySet);//{1,2,value:{a:1,b:2,c:3}}

delete (set对象里面删除元素)

  1. let mySet = new Set();
  2. mySet.add(1);
  3. mySet.add(2);
  4. mySet.add(2);
  5. mySet.delete(2);
  6. console.log(mySet);//{1}

迭代一个Set(循环set)

  1. let mySet = new Set();
  2. mySet.add(1);
  3. mySet.add(2);
  4. for(let item of mySet){
  5. console.log(item)
  6. }
  7. // 1
  8. // 2
  9. for(let item of mySet.keys()){
  10. console.log(item)
  11. }
  12. for(let item of mySet.values()){
  13. console.log(item)
  14. }

Set和Array互转

  1. //1.集合转数组
  2. let mySet = new Set();
  3. let arr1 = [...mySet];
  4. //2.集合转数组
  5. let mySet1 = new Set();
  6. let arr2 = Array.from(mySet1);
  7. //1.数组转集合
  8. let myArra1 = new Set([1,2,3,4]);