【问题标题】:How to implement a function that takes an array and some other arguments then removes the other arguments from that array如何实现一个函数,该函数接受一个数组和一些其他参数,然后从该数组中删除其他参数
【发布时间】:2022-08-16 02:35:54
【问题描述】:

各位,这是 Odin Project 的一个练习(练习 04)。我不知道下面的代码是否有任何问题,它一直未能通过 \'npm test\'(终端中的测试),但后来我用 console.log 检查它并且它有效。

const removeFromArray= function(...args) {
    const array = args[0];
        const newArray = [];
             array.forEach((item) => {
                 if(!args.includes(item)) {
                      newArray.push(item);  
        }
        });
        return newArray;
    };
  • 您没有在此处包含任何代码。我们需要查看您的尝试以指导您。
  • 嘿亲爱的!我确实包含了一个javascript代码sn-p
  • 失败了怎么办?抱歉,您没有给我们足够的信息来继续。
  • 我刚刚编辑了这个问题。谢谢你。

标签: javascript arrays


【解决方案1】:

在我看来,我还没有很好地理解这个问题。但是 JS 有内置的函数来达到这个目的

数组映射 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

数组过滤器 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

但是从我在代码中看到的内容,您必须从数组中删除第一个元素。

我建议你看看这个问题

remove first element from array and return the array minus the first element

【讨论】:

  • 谢谢@Andrea。该函数实际上有数组和其他参数作为参数,所以我的目标是只返回数组,我不认为数组方法 shift()、slice() 或 pop 可以为它工作。不过,我必须得到纠正。
【解决方案2】:

我建议将Array.filter()Array.includes() 结合使用以达到所需的结果。

如果输入数组中存在itemsToRemove 数组中的任何元素,我们将过滤它。

function removeFromArray(array, itemsToRemove) {
    return array.filter(element => !itemsToRemove.includes(element));
}

let array = [1,2,3,4,5,6];
let itemsToRemove = [2,4,6];

console.log(removeFromArray(array, itemsToRemove))

如果itemsToRemove 非常大,我们可以使用Set 以更有效的方式执行此操作:

function removeFromArray(array, itemsToRemove) {
    const itemsToRemoveSet = new Set(itemsToRemove);
    return array.filter(element => !itemsToRemoveSet.has(element));
}

let array = [1,2,3,4,5,6];
let itemsToRemove = [2,4,6];

console.log(removeFromArray(array, itemsToRemove))

【讨论】:

  • 谢谢@特里。会试一试。
【解决方案3】:

只是想知道您是否设法解决了您的问题,因为我处于类似的位置?

【讨论】:

    猜你喜欢
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    相关资源
    最近更新 更多