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]