从数组中移除数字并移动剩余元素 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

启动您的 职业生涯

完成课程获得认证

开始学习
广告