使用 JavaScript 自定義函式從陣列中刪除重複項


在本問題陳述中,我們的目標是編寫一個演算法,使用 Javascript 功能,透過函式從陣列中刪除重複項。

理解問題陳述

在上述問題陳述中,我們必須建立一個函式,該函式可以接受一個數組作為引數,並返回一個新陣列,該新陣列儲存來自給定輸入陣列的唯一項,而不包括相同的項。例如 - 假設我們有一個數組 [0, 0, 2, 2, 3, 3],那麼刪除重複數字後,我們將得到一個新陣列 [0, 2, 3]。

給定問題的邏輯

該演算法將迭代輸入陣列中的元素,然後如果該項尚未新增,則將其新增到新建立的唯一項陣列中。我們將使用 Javascript 的 map 函式來提供有效的 時間複雜度。

演算法

步驟 1:定義一個函式,從陣列中刪除重複數字並返回一個包含唯一元素的新陣列作為輸出。

步驟 2:建立一個新陣列來儲存輸入陣列的唯一元素作為結果陣列。

步驟 3:我們將使用 map 方法來儲存之前在陣列中看到的項。

步驟 4:使用 for 迴圈迭代輸入陣列項。

步驟 5:檢查條件:陣列項是否之前已出現。如果是,則將其設定為 true 並將所有唯一項推入結果陣列。

示例

//function to extract the duplicate items from the array
function removeDuplicateItems(array) {
  var result = [];
  var saw= new Map();
  for (let i = 0; i < array.length; i++) {
   if (!saw.has(array[i])) {
     saw.set(array[i], true);
     result.push(array[i]);
   }
  }
  return result;
}

const array = [11, 21, 21, 31, 41, 41, 51];
console.log(removeDuplicateItems(array));

輸出

[ 11, 21, 31, 41, 51 ]

複雜度

演算法的時間複雜度為 O(n),其中 n 是輸入陣列的長度。因為我們遍歷了陣列項以檢查陣列中的重複項。

結論

在上面的函式中,我們實現了一個從陣列中刪除相同項的程式碼。此任務的時間複雜度為 O(n),這取決於陣列的大小。

更新於:2023年8月16日

346 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.