從陣列中移除數字並移動剩餘元素 JavaScript


在這個問題陳述中,我們的任務是編寫一個函式,利用 Javascript 功能從陣列中移除數字並移動剩餘元素。因此,我們將使用基本的 for 迴圈從陣列中移除一個元素,並將剩餘元素移動以獲得輸出陣列。

理解問題陳述

問題陳述是指建立一個函式,該函式可以從陣列中移除給定的數字,並將剩餘的項移動以填充已移除項的空隙。例如,我們給定一個數組 [1, 2, 3, 4, 5] 和數字 2,則結果陣列將是 [1, 3, 4, 5],其中數字 2 已被移除,其餘項已移動以填充空隙。

給定問題的邏輯

為了解決給定的問題,我們將持續跟蹤當前要複製元素的位置。每當我們找到一個等於給定數字的元素時,我們將跳過該數字並繼續迭代陣列。如果我們找到一個不等於給定數字的項,我們將將其複製到當前位置並遞增位置。如果迴圈結束,我們將把陣列的長度設定為當前位置,並消除未複製的元素。

該函式將能夠移動剩餘的項,以便陣列中沒有留下空隙。

演算法 - 使用 filter 方法

步驟 1 − 宣告一個整數陣列,從中我們必須移除數字。

步驟 2 − 由於我們必須透過移除數字來顯示陣列,因此使用 Javascript 中的 filter 方法從上述陣列中過濾該數字。

步驟 3 − 移除數字並移動陣列中的空隙後,顯示陣列。

演算法程式碼 - 使用 filter 方法

const arrayOfNumbers = [12, 22, 35, 44, 52, 35, 68];
const arrayWithoutNum = arrayOfNumbers.filter(function (number) {
   return number !== 35;
});

// arrayOfNumbers is unchanged
console.log("Actual Array: ",arrayOfNumbers);
console.log("Array without a number: ", arrayWithoutNum);

演算法 - 使用 for 迴圈

步驟 1 − 在第一步定義一個數組。

步驟 2 − 使用一個空陣列來儲存從陣列中移除數字後得到的結果陣列。

步驟 3 − 使用 for 迴圈遍歷陣列並檢查條件:如果陣列中的數字不等於宣告的數字,則將其推入新陣列。

步驟 4 − 最後,顯示從陣列中移除數字後的結果陣列。

演算法程式碼 - 使用 for 迴圈

const arrayOfNumbers = [12, 22, 35, 44, 52, 35, 68];
const arrayWithoutNum = [];

for (let i = 0; i < arrayOfNumbers.length; i++) {
   if (arrayOfNumbers[i] !== 35) {
      arrayWithoutNum.push(arrayOfNumbers[i]);
   }
}

// arrayOfNumbers is unchanged
console.log("Actual array of Numbers: ", arrayOfNumbers);
console.log("Array after removing a number: ", arrayWithoutNum);

複雜度

由於我們必須遍歷陣列中的所有整數,因此該方法消耗的時間為 O(n)。並且演算法的空間複雜度是常數 O(1)。因為沒有使用額外的的資料結構。

結論

因此,對於上述程式碼,我們使用 for 迴圈在 Javascript 中搜索要從陣列中移除的數字,並透過移動元素的位置來獲取剩餘元素。此函式的時間複雜度為 O(n),空間複雜度為 O(1)。

更新於:2023年5月18日

瀏覽量:114

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告