数组去重
题目:
为 Array 对象添加一个去除重复项的方法
解答:
思路1:
Array.prototype.uniq = function () {
return Array.from(new Set(this))
}
var arr = [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN];
console.log(arr.uniq());
思路2:创建一个新数组;遍历原数组,判断原数组是否有这个值,如果没有这个值,判断是否为NaN,如果是NaN,把它push到新数组里面,更改flag值,如果不是NaN,直接push到新数组。
Array.prototype.uniq = function () {
let array = [];
let flag = true;
for(let i=0;i<this.length;i++){
if(array.indexOf(this[i] == -1)){
if(this[i] != this[i]){
if(flag){
array.push(this[i]);
flag = false;
}
}else{
array.push(this[i]);
}
}
}
return array;
}
var arr = [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN];
console.log(arr.uniq());
let arr = [
{
key:'1',
name:'林青霞'
},
{
key:'2',
name:'张三丰'
},
{
key:'1',
name:'段誉'
},
]
let res = arr.filter(function(item,index,self){
return self.findIndex(el=>el.key==item.key)===index
})
console.log(res,'===')
知识点:ES6的Set结构、类数组转换为数组方法( Array.from)、类数组