Es6數(shù)組去重

問題:
一個(gè)數(shù)組中每一項(xiàng)都是對(duì)象,其中有兩三個(gè)對(duì)象是相同的,這個(gè)時(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é)果:

輸出結(jié)果

原因:
可以看到是不行的,個(gè)人理解是因?yàn)閷?duì)象指向的是內(nèi)存地址,數(shù)組中的每一項(xiàng)雖然“看起來是一樣的”,但實(shí)際上是不一樣的,所以通過普通的方法進(jìn)行比較是行不通的。

解決:
方法1:Set結(jié)合Array.from

var a = [{a:'1'},{a:'1'},{b:'2'}];
var b = Array.from(new Set(a))
Set和Array.from

image.png

方法2:拓展運(yùn)算符結(jié)合Set

var c = [...new Set(a)]
console.log(c)
拓展運(yùn)算符結(jié)合Set
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ES6里新添加了兩個(gè)很好用的東西,set和Array.from。 set是一種新的數(shù)據(jù)結(jié)構(gòu),它可以接收一個(gè)數(shù)組或者...
    浮生小孟閱讀 3,212評(píng)論 0 3
  • ES5及之前大多都是用遍歷和算法來實(shí)現(xiàn)數(shù)組去重,現(xiàn)在介紹兩種ES6更為簡便的方式。ES6之Set,Array.fr...
    鞏小白閱讀 900評(píng)論 4 7
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,423評(píng)論 6 13
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,679評(píng)論 0 4
  • 歷程:沒有開拓者(先行者)的犧牲與遭遇,怎會(huì)有后來者的清閑。
    希波克林閱讀 361評(píng)論 2 4

友情鏈接更多精彩內(nèi)容