問題:
一個數(shù)組中每一項都是對象隧饼,其中有兩三個對象是相同的促脉,這個時候需要做到去重。要怎么做呢铸屉?
使用普通的去重方式:
var a = [{a:'1'},{a:'1'},{b:'2'}];
// 使用普通的方法去重
Array.prototype.unique1 = function(){
var res = [this[0]];
for(var i = 1; i < this.length; i++){
var repeat = false;
for(var j = 0; j < res.length; j++){
if(this[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(this[i]);
}
}
return res;
}
console.log(a.unique1())
輸出結(jié)果:
原因:
可以看到是不行的,個人理解是因為對象指向的是內(nèi)存地址切端,數(shù)組中的每一項雖然“看起來是一樣的”彻坛,但實際上是不一樣的,所以通過普通的方法進(jìn)行比較是行不通的踏枣。
解決:
方法1:Set結(jié)合Array.from
var a = [{a:'1'},{a:'1'},{b:'2'}];
var b = Array.from(new Set(a))
方法2:拓展運(yùn)算符結(jié)合Set
var c = [...new Set(a)]
console.log(c)