ES6的Set用法

Set数据结构

*es6方法,Set本身是一个构造函数,它类似于数组,但是成员值都是唯一的。

const set = new Set([1,2,3,4,4])
console.log([...set] )// [1,2,3,4]
console.log(Array.from(new Set([2,3,3,5,6]))); //[2,3,5,6]

单一数组的去重:

   let set = new Set([1,2,2,2,3]);   
   console.log(set);//Set(3) {1,2,3}
   console.log([...set]);//[1,2,3]
    

多数组的合并去重:

        let arr1 = [1,2,3,4]
        let arr2 = [2,3,4,5]
        let set = new Set([...arr1, ...arr2]);   
        console.log(set);//Set(5) {1,2,3,4,5}
        console.log([...set]);//[1,2,3,4,5]
        console.log(Array.from(set))////[1,2,3,4,5]

操作:

1、向Set中添加元素:

let set1=new Set();
set1.add(1);
set1.add(2);
console.log(set1);//Set(2) {1,2}

2、从set中删除元素;

    var set1 = new Set();
    set1.add(1);
    set1.add(2);
    set1.delete(1);
    console.log(set1);//Set(1) {2}

3、判断某元素是否存在;  

        let set = new Set();
        set.add(1);
        set.add(2);
        set.delete(1);
        console.log(set.has(1));    //false
        console.log(set.has(2));    //true

4、清除所有元素;

        let set = new Set();
        set.add(1);
        set.clear();
        console.log(set);   //Set(0) {}

Set和Array互转  

1、数组转Set

     let set1 = new Set([1,2,3]);    
     console.log(set1);//Set(3) {1, 2, 3}
     let set2 = new Set(new Array(1,2,3));  
     console.log(set2)//Set(3) {1, 2, 3}

2、Set转数组

     var set = new Set([1,2,3]);
     console.log([...set]);    //[1,2,3]
     console.log(Array.from(set));    //[1,2,3]

遍历  

可以使用set实例对象的keys()、values()、entries()方法进行遍历;

由于Set的键名和键值是同一个值,它的每一个元素的key和value是相同的,所有的keys()和values()返回的值都是相同的,entrise()返回元素中的key和value是相同的。

let set1 = new Set([1,2,'hello'])

for(let item of set1.keys()){
    console.log(item);    //1,2,'hello'
}

for(let item of set1.values()){
    console.log(item);    //1,2,'hello'
}

for(let item of set1.entries()){
    console.log(item);    //[1,1][2,2]['hello','hello']
}
   set1.forEach((key,value)=>{
         console.log(key+':'+value);//1:1,2:2,hello:hello
   })

其他特性:

在向Set加入值时,Set不会转换数据类型,内部在判断元素是否存在时用的类似与精确等于(===)的方法,“2”和2是不同的,NaN等于自身;

var set = new Set()
set.add(NaN);
set.add(NaN);
console.log(set);    //Set(1) {NaN} 
posted @ 2020-02-29 23:00  huanghuamei206023  阅读(168)  评论(0编辑  收藏  举报