ES6新增Set集合

2019-06-19  本文已影响0人  易路先登
1 Set集合的获取

类似于数组但不是数组,它的元素是不可重复的。

let setList = new Set();
setList.add(1);
setList.add(2);
setList.add(1);
console.log(setList );//{1,2}
let arr = [1,2,1];
let setList = new Set(arr);
console.log(setList );//{1,2}

可以利用set集合元素不重复,构造函数初始化时可传入数组的特点对数组进行去重操作

let arr = [1,2,1];
let setList = new Set(arr);
arr = Array.from(setList);
console.log(arr);//[1,2]
2 Set的‘长度’set.size
let arr = [1,2,1];
let setList = new Set(arr);
console.log(setList .size);//2
3 Set是一种数据容器,存在增删改查操作(curd)下面做个简单介绍:
let setList = new Set();
setList.add(1);
console.log(setList );//{1}
  1. set.delete(arg)删除某个元素
  2. set.clear()删除全部元素
let setList = new Set();
setList.add(1);
setList.add(2);
setList.add('3');
console.log(setList );//{1,2,'3'}
setList.delete(1);
console.log(setList );//{2,'3'}
setList.clear();
console.log(setList );//{}
let setList = new Set();
setList.add({name:'zhangsan',age:18});
setList.add({name:'lisi',age:18});
setList.add({name:'王五',age:18});
let arr = setList.forEach((value,key,set)=>{
    if(value.name==='zhangsan'){
        value.age = 30;
    }
})
console.log(setList);
/*{
{name: "zhangsan", age: 30},
{name: "lisi", age: 18},
{name: "王五", age: 18}
}
*/

注意:这还是set集合中放置的是引用类型元素时的改方法,如果想改变基本类型值得元素,只能通过delete再add,但位置就无法对应,所以几乎是不可能的。

let setList = new Set();
setList.add(1);
setList.add(2);
setList.add('3');
console.log(setList.has('3') );//true

4 set的遍历
let setList = new Set();
setList.add(1);
setList.add(2);
setList.add('3');
for(let key of setList.keys()){
    console.log(key);
}//1 2 '3'
for(let value of setList.values()){
    console.log(value);
}//1 2 '3'
for(let [key,value] of setList.entries()){
    console.log(key,value);
}//1 1  2 2   '3'  '3'
let setList = new Set();
setList.add(1);
setList.add(2);
setList.add('3');
setList.forEach(function(item){
  console.log(item);
})//1 2 '3'
5 WeakSet
let weakList = new WeakSet();
let obj = {};
weakList .add(obj );
console.log(weakList );

从上边代码看似乎WeakSet与Set没啥区别,请注意weak是虚弱阉割的意思,WeakSet相对于Set多了很多限制,如下:

  1. 只能存放引用类型的元素(而且还是弱引用,会被js垃圾回收机制忽视)
  2. 没有clear方法
  3. 不能遍历
  4. 没有size属性
    ES6总篇--目录
上一篇下一篇

猜你喜欢

热点阅读