ES6新增Set集合

1 Set集合的获取

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

  • 构造函数加set.add(arg)方法
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)下面做个简单介绍:
  • 增 set.add(arg)
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 );//{}
  • 改 遍历,找到对应项进行修改,如要修改setList 集合中的name是'张三的项的年龄为30
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,但位置就无法对应,所以几乎是不可能的。

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

4 set的遍历
  • let...of
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'
  • forEach
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总篇--目录
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容