分享兩種js中數(shù)組去重的方法

對(duì)于數(shù)組項(xiàng)為基本類型(基本為數(shù)字或字符串)的:

  • 使用filter數(shù)組去重
var arr = [1, 2, 2, 3, 4, 5, 5, 6, 6, 6, 7]
function fn(arr) {
  return arr.filter((x, index, self) => self.indexOf(x) === index)
}

比較簡(jiǎn)單粗暴躺彬,利用indexOf只會(huì)找到第一個(gè)匹配項(xiàng)的下標(biāo)這個(gè)特性伸辟,忽略重復(fù)的數(shù)組項(xiàng)麻惶。

  • 利用對(duì)象的key去重
var arr = [1, 2, 2, 3, 4, 5, 5, 6, 6, 6, 7]
function fn(arr) {
  let hashTable = {}
  let data = []
  for (let i = 0; i < arr.length; i++) {
    if (!hashTable[arr[i]]) {
      hashTable[arr[i]] = true
      data.push(arr[i])
    }
  }
  return data
}

利用了對(duì)象的key值去重,當(dāng)然信夫,對(duì)于這種數(shù)組項(xiàng)為基本類型的數(shù)組窃蹋,去重還有很多方法卡啰,es6出了Set這種數(shù)據(jù)類型,對(duì)普通數(shù)組的去重更是簡(jiǎn)單粗暴警没。

但在工作中匈辱,去重的需求并不是那么簡(jiǎn)單,往往數(shù)組是一個(gè)對(duì)象數(shù)組杀迹,然后根據(jù)其中的某一個(gè)字段去重亡脸,對(duì)于這種需求,我們還是可以用上面的方法树酪,利用對(duì)象的key值去重:

let arr1 = [{id: 1}, {id: 2}, {id: 3}, {id: 4}]
let arr2 = [{id: 5}, {id: 2}, {id: 3}, {id: 8}]
// 比如這個(gè)浅碾,兩個(gè)數(shù)組合并然后根據(jù)id這個(gè)字段去重
function fn(arr1,arr2){
  let arr = arr1.concat(arr2)
  let hashTable = {}
  let data = []
  for (let i = 0; i < arr.length; i++) {
    if (!hashTable[arr[i].id]) {
      hashTable[arr[i].id] = true
      data.push(arr[i])
    }
  }
  return data
}

覺(jué)得這個(gè)利用key值的方式還是挺萬(wàn)能的,之后看到還有好的方式超人鴨也會(huì)繼續(xù)添加在這篇文章里面嗅回。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末及穗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子绵载,更是在濱河造成了極大的恐慌,老刑警劉巖苛白,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娃豹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡购裙,警方通過(guò)查閱死者的電腦和手機(jī)懂版,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)躏率,“玉大人躯畴,你說(shuō)我怎么就攤上這事∞敝ィ” “怎么了蓬抄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)夯到。 經(jīng)常有香客問(wèn)我嚷缭,道長(zhǎng),這世上最難降的妖魔是什么耍贾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任阅爽,我火速辦了婚禮,結(jié)果婚禮上荐开,老公的妹妹穿的比我還像新娘付翁。我一直安慰自己,他們只是感情好晃听,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布百侧。 她就那樣靜靜地躺著着帽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪移层。 梳的紋絲不亂的頭發(fā)上仍翰,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音观话,去河邊找鬼予借。 笑死,一個(gè)胖子當(dāng)著我的面吹牛频蛔,可吹牛的內(nèi)容都是我干的灵迫。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼晦溪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瀑粥!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起三圆,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤狞换,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后舟肉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體修噪,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年路媚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了黄琼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡整慎,死狀恐怖脏款,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情裤园,我是刑警寧澤撤师,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站比然,受9級(jí)特大地震影響丈氓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜强法,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一万俗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饮怯,春花似錦闰歪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)临扮。三九已至,卻和暖如春教翩,著一層夾襖步出監(jiān)牢的瞬間杆勇,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工饱亿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚜退,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓彪笼,卻偏偏與公主長(zhǎng)得像钻注,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子配猫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,219評(píng)論 0 4
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,093評(píng)論 1 32
  • ??引用類型的值(對(duì)象)是引用類型的一個(gè)實(shí)例泵肄。 ??在 ECMAscript 中捆交,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,044評(píng)論 0 1
  • 第3章 基本概念 3.1 語(yǔ)法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡(jiǎn)單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,106評(píng)論 0 21
  • https://nokogiri.org/tutorials/installing_nokogiri.html
    biubiudog閱讀 73評(píng)論 0 0