最实用的数组去重方法

1. 数组元素全部是原始类型

实用Set数据结构进行去重;因为Set数据结构本身要求值唯一。

[...new Set(arr)]
// 或者
Array.from(arr)

而且该方法中+0/-0认为是同一个值;NaN等于自身,被去重。

示例:

// 对于数字,布尔值,字符串,null, undefined,NaN, +0,-0都可以去重
[...new Set([1,1,true,true,'1','1',+0,-0,NaN, NaN, null, null, undefined, undefined])]
// [1,true,'1',0,NaN,null,undefined]

而任何两个对象都不相同,因为储存地址不同。不能通过Set结构去重。

因为,数组、函数、正则表达式、Date对象等都是特殊形式的对象,所以也不能被去重。

[...new Set([/a/, /a/])]; //[/a/,/a/]
const date = new Set([new Date('2019-09-09'), new Date('2019-09-09')]) // data.size=2
[...new Set([[1], [1]])]; // [[1], [1]]
[...new Set([function(){}, function(){}])]; // [f,f]

 

posted @ 2019-11-06 21:56  Lyra李  阅读(189)  评论(0编辑  收藏  举报