
数组
|
123
5.11.2
方案
创建一个
Set
对象,填充数组的值。
Set
对象将自动去除重复。然后,再把
Set
对
象转换成数组。
const
numbersWithDuplicates = [2, 42, 5, 42, 304, 1, 13, 2, 13];
//
创建一个
Set
对象,留下独一无二的值(重复的
42
、
2
和
13
将被去除)
const
uniqueNumbersSet = new Set(numbersWithDuplicates);
//
再把
Set
对象转换成数组(现在有
6
个元素)
const
uniqueNumbersArray = Array.from(uniqueNumbersSet);
知道方法之后,可以使用展开运算符,把整个过程合为一个语句。
const
numbersWithDuplicates = [2, 42, 5, 42, 304, 1, 13, 2, 13];
const
uniqueNumbers = [...new Set(numbersWithDuplicates)];
5.11.3
讨论
Set
对象是一种特殊的集合类型,不允许出现重复的值。可以利用这一点去除数组
中重复的元素,简单高效。这种方式(先变成
Set
对象再转换成数组)比迭代数组,
使用
findIndex()
方法找出重复元素的效率高多了。
查找重复值时,
Set
所做的测试类似于严格相等比较运算符
===
,因此
3
和
'3'
不算
重复值。不过,有点特别的是,
Set
把多个
NaN
视为重复的值,而
NaN===NaN
通常返 ...