题目描述
为 Array 对象添加一个去除重复项的方法
输入
[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN]
输出
[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']
常规思维
实现一:
Array.prototype.uniq = function () {
var arr= [];
var flag = true
for(var i=0;i<this.length;i++){
if(arr.indexOf(this[i]) === -1) {
if(this[i] !== this[i]){ //NaN情况
if(flag){
arr.push(this[i])
flag = false;
}
}else{
arr.push(this[i])
}
}
}
return arr
}
PS: console.log(NaN===NaN) // false
实现二:
Array.prototype.uniq = function () {
return [...new Set(this)]
}