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