题目描述
为 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)] }