es6 Set用法

ES6 提供了新的数据结构 Set
特性:类似于数组,但是它的特性是唯一的,可以用此特性,对数组进行去重操作;

单一数组的去重

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

多数组的合并去重

let Arr1 = [1,2,3,4]
let Arr2 = [2,3,4,5]
let set = new Set([...arr1,...arr2]) // Set{1,2,3,4,5}

对象中的扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中

向Set中添加元素

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

向set 中删除元素

var set1 = new Set();

set1.add(1)

set1.add(2)

set1.delete(1)

console.log(set1)    //{2}

判断元素是否存在

let set = new Set()

set.add(1);

set.add(2);

set.delete(1);

set.has(1);    //false

set.has(2);    //true

清除所有元素

let set = new Set();

set.add(1)

set.clear()    //{}

Set和Array互转

1、数组转set

let set1 = new Set([1,2,3]);    // Set{1,2,3}

let set2 = new Set(new Array(1,2,3));    // Set{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']

}

其他特性

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

var set = new Set()

set.add(NaN);

set.add(NaN);

console.log(set);    //Set {NaN}

猜你喜欢

转载自blog.csdn.net/weixin_36430673/article/details/103307889
今日推荐