猿问

循环 - 从数组中删除元素

我正在尝试从另一个数组中找到的数组中删除特定元素。我的数组返回不变。我的假设是我在if声明中的条件不正确,但是,我无法在网上找到关于这应该是什么的明确解释。任何帮助是极大的赞赏。


试图...args从array


    <script>

        removeFromArray = function(array, ...args) {


            let removalItems = Array.from(args);


            for (i = 0; i < removalItems.length; i++) {

                if (array === removalItems[i]) {

                    array.splice(i, 1);

                } else {

                    i++

                }

            }

            // console.log(array);

            return array;

        }

        removeFromArray([1, 2, 3, 4], 3, 2)

    </script>

    ```


喵喔喔
浏览 165回答 4
4回答

心有法竹

您的代码中的问题是您正在进行一个循环,removeFromArray但您没有循环通过您的数组来检查数组中的每个元素是否与 removefromarray 您必须使用嵌套循环removeFromArray = function(array, ...args) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let removalItems = Array.from(args);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (i = 0; i < array.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (j = 0; j < removalItems.length; j++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (array[i] === removalItems[j]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array.splice(i, 1);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else continue&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return array&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; console.log(removeFromArray([1, 2, 3, 4], 3, 2))另一种方法是使用过滤器removeFromArray = function(array, ...args) {&nbsp; &nbsp; &nbsp; &nbsp; let removalItems = Array.from(args);&nbsp; &nbsp; &nbsp; &nbsp;return array.filter(x=>!removalItems.some(y=>x==y))&nbsp; &nbsp; }&nbsp; &nbsp; console.log(removeFromArray([1, 2, 3, 4], 3, 2));

qq_花开花谢_0

使用filter()会简化这一点并且不会改变原始数组const removeFromArray = (array, ...args) => {&nbsp; let removalItems = new Set(args);&nbsp; return array.filter(e => !removalItems.has(e));}console.log(removeFromArray([1, 2, 3, 4], 3, 2))

慕容708150

您几乎没有错误,如果它们不在同一位置,并且当您删除带有 slice 的项目时,您需要递减 i 否则您将跳过项目const removeFromArray = (array, ...removalItems) => {&nbsp; &nbsp; for (i = 0; i < array.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; if (removalItems.includes(array[i])) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array.splice(i, 1);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i--;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return array;}但是过滤器更干净const removeFromArray = (array, ...removalItems) => array.filter(x => !removalItems.includes(x))

哈士奇WWW

您将数组视为具有单个对象。遍历数组并使用包含方法检查该元素是否存在于removingItems 数组中。如果是 splice ,则增加。removeFromArray = function(array, ...args) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let removalItems = Array.from(args);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (i = 0; i < array.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (removalItems.includes(array[i])) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array.splice(i, 1);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;i--;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // console.log(array);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return array;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; console.log(removeFromArray([1, 2, 3, 4], 3, 2));这是另一种解决方案,在迭代时不拼接数组。removeFromArray = function(array, ...args) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let removalItems = Array.from(args);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let result = [];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (i = 0; i < array.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!removalItems.includes(array[i])) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result.push(array[i]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // console.log(array);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return result;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; console.log(removeFromArray([1, 2, 3, 4], 3, 2));
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答