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循环
第一步 − 在第一步定义一个数组。
第二步 − 使用一个空数组来存储从数组中删除的数字。
第三步 − 使用for循环遍历数组,并检查条件,如果数组中的数字不等于指定的数字,则将其推入新数组。
第四步 − 最后显示从数组中删除数字后的结果数组。
算法的代码 – 使用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)。