(1)ES6的set()方法
注释:类似'1'和1会两个都保存,NaN和NaN只会保存一个
var arr=[1,5,5,5,2,1,4,2];
arr=[...new Set(arr)]; //[1,5,2,4]
(2)使用遍历+indexOf()
注释:这个方法不能分辨NaN,会出现两个NaN。是有问题的,下面那个方法好一点。
let a = ['1','1', '2', '3', 1, NaN, NaN, undefined, undefined, null, null, 'a', 'b', 'b'];
let arr = []
a.forEach(v => {
if (arr.indexOf(v) <0) {
arr.push(v)
}
})
console.log(arr)//["1", "2", "3", 1, NaN, NaN, undefined, null, "a", "b"]
(3)利用obj的特质:key一样值不一样,后面覆盖前面,key,value都一样,会去掉重复的
obj:{key:"",value:""}
注释:“1”和1会被认为是同样的东西
let a = ['1', '1', '2', '3', 1, 2, NaN, NaN, undefined, undefined, null, null, 'a', 'b', 'b'];
let obj = {}
a.forEach(v => {
obj[v] = 0; //如果不设置值,添加不进去属性
})
console.log(Object.keys(obj))//["1", "2", "3", "NaN", "undefined", "null", "a", "b"]