在 JavaScript 中完全移除陣列中的重複項


我們要編寫一個接收陣列並返回一個已從中移除所有重複值的陣列的新陣列的函式。

在原始陣列中出現過多次的值,即使只出現過一次,也不應出現在新陣列中。

例如,如果輸入是 -

const arr = [23,545,43,232,32,43,23,43];

輸出應為 -

const output = [545, 232, 32];

理解差別 -

  • Array.prototype.indexOf() → 如果搜尋字串存在,則返回其第一次出現的索引,否則返回 -1。

  • Array.prototype.lastIndexOf() → 如果搜尋字串存在,則返回其最後一次出現的索引,否則返回 -1。

這兩種方法都從左到右開始。

這兩種方法都從 0 開始,如果第二個引數未定義,當第二個引數為數字時從第二個引數開始。

因此,此處的重要一點是,如果在一個數組中,indexOf() 和 lastIndexOf() 方法指向同一個索引,則我們可以確定它只存在一次,因此我們將在我們的程式碼中使用此發現。

該函式的完整程式碼如下 -

示例

const arr = [23,545,43,232,32,43,23,43];
const deleteDuplicate = (arr) => {
   const output = arr.filter((item, index, array) => {
      return array.indexOf(item) === array.lastIndexOf(item);
   })
   return output;
};
console.log(deleteDuplicate(arr));

輸出

控制檯中的輸出如下 -

[ 545, 232, 32 ]

更新於: 19-Aug-2020

257 次瀏覽

職業起步

完成課程以獲得認證

開始
廣告
© . All rights reserved.