<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          3種JavaScript中刪除重復(fù)數(shù)組值的簡單方法

          共 1201字,需瀏覽 3分鐘

           ·

          2021-07-27 20:16

          原文 | https://medium.com/code-85/three-easy-ways-to-remove-duplicate-array-values-in-javascript-97131baeba7a

          原譯 | 小愛


          有多種方法可以刪除數(shù)組中的重復(fù)值。在開始使用推薦的方法之前,先問問自己你使用的是哪個 ES 版本?

          我們將通過三種策略來刪除重復(fù)值。每個策略都將使用更新的約定,從而產(chǎn)生更高效的代碼。為了節(jié)省空間,假設(shè)每個代碼片段都使用一個名為 items 的變量,該變量是一個包含一些重復(fù)值的數(shù)組。

          1、帶有 .indexOf() 的 For 循環(huán)

          第一種方法經(jīng)過實(shí)戰(zhàn)測試,保證即使是最古老的基礎(chǔ)設(shè)施也能使用。

          我們首先定義一個新數(shù)組來保存唯一值,然后使用 for 循環(huán)通過 indexOf() 方法手動檢查每個值。當(dāng) indexOf() 返回 -1 時,我們知道該值尚未出現(xiàn)在我們的唯一數(shù)組中。

          var unique = [];for(var i=0; i < items.length; i++) {  if(unique.indexOf(items[i]) == -1) {    unique.push(items[i]);  }}

          2、.filter() 與 .indexOf()

          第二個序列將需要 ES5,它于 2009 年發(fā)布。

          使用 .filter(),我們避免預(yù)定義一個空數(shù)組并繞過 for 循環(huán)。該策略的秘訣在于 .indexOf() 將返回從左側(cè)開始找到的值的索引。這意味著如果當(dāng)前索引與 .indexOf() 的返回值不匹配,那么我們找到了重復(fù)項(xiàng)。

          var unique = items.filter(  (item, index) => {    return items.indexOf(item) == index;  });

          3、Set() 與擴(kuò)展運(yùn)算符

          這個最終策略利用了 2015 年發(fā)布的 ES6 的特性。

          在 ES6 中,JavaScript 支持 Set() 數(shù)據(jù)結(jié)構(gòu),根據(jù)定義,該結(jié)構(gòu)僅包含唯一值。使用 Set() 的一個缺點(diǎn)是我們不再留下數(shù)組。我們使用擴(kuò)展運(yùn)算符來解決這個問題,將集合解包到一個新形成的數(shù)組中。

          const unique = [... new Set(items)];

          你需要根據(jù)正在構(gòu)建的環(huán)境來決定選擇哪種實(shí)現(xiàn)。雖然自然的反應(yīng)是“越新越好”,但不要忘記考慮代碼的舒適度以及在重新訪問時識別代碼的能力。

          以上就是我分享的3種方法,希望對你也有幫助,謝謝你的閱讀!


          學(xué)習(xí)更多技能

          請點(diǎn)擊下方公眾號


          瀏覽 26
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  婷婷激情在线视频 | 影音先锋麻豆视频 | 亚洲操B网 | 精品大香蕉在线视频 | 狼人综合影院 |