ES6-Set数据结构实现-数组去重-问题详解

ES6-Set数据结构

类似于数组,但是成员的值都是唯一的,没有重复。Set本身是一个构造函数,用来生成Set数据结构

①实现去重:

const s = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
console.log(s);
Set(4) [ 2, 3, 5, 4 ]

②还有一种更简单方法,需要结合…扩展运算符来实现数组去重

…扩展运算符:将一个数组转为用逗号分隔的参数序列

console.log(...[1, 2, 3]);
//1 2 3
console.log(1, 2, 3);//如同这个
//1 2 3

进一步解释:

//[...[1, 2, 3]]=>[1, 2, 3]
console.log([...[1, 2, 3]]);
//[1, 2, 3]

在这里我分享一下我之前不理解的疑问点

没有深刻理解…扩展运算符的作用,即将一个数组转为用逗号分隔的 参数序列
要明白参数序列这个词的含义,即…[1, 2, 3]=>1, 2, 3的形式
因为我之前不理解,不知道有没有和我一样没有很好的理解这个定义。所以点一下。

接下来用一句代码实现数组去重

var arr = [1, 2, 3, 4, 2, 3, 4, 2];
console.log([...new Set(arr)]);
//[ 1, 2, 3, 4 ]

Set函数可以接受一个数组作为参数,用来初始化

以上是我整理自ES6标准入门第3版教程。

我的理解

[...new Set(arr)]这句代码就需要很好的理解一下,比如这个例子:

//[...[1, 2, 3]]=>[1, 2, 3]
console.log([...[1, 2, 3]]);
//[1, 2, 3]

是我想表达的,即1, 2, 3 左右分别加上 [] ,就是数组的形式~[1, 2, 3]
...new Set(arr)返回一个由逗号分隔的参数列表,再在左右加上 [] 就是数组的形式
我的拙见,有不同意见欢迎留言。

③from方法+Set实现数组去重

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

注:Array.from方法可以将Set结构转为数组。

你可能感兴趣的:(ES6)