溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JS對象數(shù)組去重的方法有哪些

發(fā)布時(shí)間:2021-07-16 11:55:18 來源:億速云 閱讀:183 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“JS對象數(shù)組去重的方法有哪些”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

目錄
  • 一.去重前后數(shù)據(jù)對比

  • 二.使用方法

    • 1.使用filter和Map

    • 2.使用reduce

    • 3.使用for循環(huán)

  • 三.2400條數(shù)據(jù),三種方法處理時(shí)間對比

    一.去重前后數(shù)據(jù)對比

    // 原數(shù)據(jù)是這樣的                   // 去重后數(shù)據(jù)是這樣的
    [{                                [{
      "goodsId": "1",                    "goodsId": "1",
      "quota": 12,                       "quota": 12,
      "skuId": "1"                       "skuId": "1"
    },                                 },
    {                                  {
      "goodsId": "2",                    "goodsId": "2",
      "quota": 12,                       "quota": 12,
      "skuId": "2"                       "skuId": "2"
    },                                 }]
    {
      "goodsId": "1",
      "quota": 12,
      "skuId": "1"
    }]

    二.使用方法

    1. 使用filter和Map   ?????

    2. 使用reduce        ????

    3. for循環(huán)           ???

    結(jié)論:filter和Reduce時(shí)間上差別不是太大,filter稍微更快一些,但是filter語法更簡潔

    1.使用filter和Map

    代碼簡潔,好用,4行代碼搞定,平均耗費(fèi)時(shí)間最短,五星推薦

    function uniqueFunc(arr, uniId){
      const res = new Map();
      return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1));
    }

    2.使用reduce

    代碼稍多,平均耗費(fèi)時(shí)間和第一不分伯仲,四星推薦

    function uniqueFunc2(arr, uniId){
      let hash = {}
      return arr.reduce((accum,item) => {
        hash[item[uniId]] ? '' : hash[item[uniId]] = true && accum.push(item)
        return accum
      },[])
    }

    3.使用for循環(huán)

    耗費(fèi)時(shí)間較一二稍多,但是耗費(fèi)時(shí)間平均,三星推薦

    function uniqueFunc3(arr, uniId){
      let obj = {}
      let tempArr = []
      for(var i = 0; i<arr.length; i++){
        if(!obj[arr[i][uniId]]){
          tempArr.push(arr[i])
          obj[arr[i][uniId]] = true
        }
      }
      return tempArr
    }

    三.2400條數(shù)據(jù),三種方法處理時(shí)間對比

    測試次數(shù)filter Mapreducefor循環(huán)
    10.139892578125 ms0.19189453125 ms0.2060546875 ms
    20.12109375 ms0.1279296875 ms0.195068359375 ms
    30.112060546875ms0.11767578125 ms0.174072265625 ms
    40.10400390625 ms0.1728515625 ms0.18701171875 ms
    50.10986328125 ms0.12890625 ms0.175048828125 ms
    60.113037109375 ms0.10791015625 ms0.172119140625 ms
    70.134033203125 ms0.129150390625 ms0.172119140625 ms

    測試時(shí)間截圖展示

    JS對象數(shù)組去重的方法有哪些

    JS對象數(shù)組去重的方法有哪些

    JS對象數(shù)組去重的方法有哪些

    JS對象數(shù)組去重的方法有哪些

    JS對象數(shù)組去重的方法有哪些

    JS對象數(shù)組去重的方法有哪些

    “JS對象數(shù)組去重的方法有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    js
    AI