美文网首页
ES6新增Set集合

ES6新增Set集合

作者: 易路先登 | 来源:发表于2019-06-19 17:43 被阅读0次
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总篇--目录

相关文章

  • 21.Set

    Set ES6之前只有数组这样一种集合类型,现在新增了 set 、 map 两种集合类型,set 可以想象为一种唯...

  • <<深入理解ES6>>记:七

    第7章 Set集合和Map集合 1.问题描述 2.ES6中的Set集合ES6中新增的Set类型是一种有序列表,其中...

  • JavaScript-Set

    Set ES6新增数据类型 Set是一组key的集合,并不存储value, key不能重复存储

  • ES6新增Set集合

    1 Set集合的获取 类似于数组但不是数组,它的元素是不可重复的。 构造函数加set.add(arg)方法 构造函...

  • ES6迭代器学习笔记

    es6中,加上新增的集合对象已经有了4种(Object,Array,Set,Map),Iterator迭代器是提供...

  • Set Map WeakSet WeakMap

    Set 集合的数据结构 Set集合新增了add, delete ,Set.size,has,keys,clear,...

  • 介绍一下Set和Map

    Set (集合)ES6新增的数据结构,类似于数组,但是无序且唯一,没有重复的值; Set本身是一种构造函数,用来生...

  • 彻底弄懂 ES6 中的 Map、Set、weakMap、weak

    Set(集合) Set 是什么?它是 ES6 新增的一种数据结构,类似于数组,但成员是唯一且无序的,没有重复的值。...

  • 简单介绍Set、Map、WeakSet和WeakMap的区别

    一、集合(Set) ES6 新增的一种新的数据结构,类似于数组,但成员是唯一且无序的,没有重复的值。Set 本身是...

  • 数组去重的方法总结(2017年)

    现在要求去重下面这个数组 方法一:ES6 Set() Set 是ES6新加的集合,集合中的值不会重复。 ......

网友评论

      本文标题:ES6新增Set集合

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