通过Javascript中的值从数组中删除元素

时间:2018-10-20 15:24:02

标签: javascript arrays

对我来说有点模糊,但是我正在尝试创建一个简单的函数,该函数需要一个数组和一些参数,并从数组中删除参数。

例如,如果我有一个数组,例如[1,2,3,4]和参数2,3,它将作为结果返回[1,4]

这是我到目前为止所拥有的:

const removeFromArray = (arr) => {
    let args = Array.from(arguments);

    return arr.filter(function (item) {
        !args.includes(item);
    });
}

虽然不起作用。如果我想从数组中删除所有项目,它会起作用,但是如果我只寻找特定的项目,则不会。

即使我提供的参数不属于数组(我希望它忽略那些参数)并且数组中也有字符串,我如何才能使其工作呢?

谢谢!

4 个答案:

答案 0 :(得分:4)

您可以将rest parameters ...用作项目以排除值。

const removeFromArray = (array, ...items) => array.filter(item => !items.includes(item));

console.log(removeFromArray([1, 2, 3, 4], 1, 4))

要使用样式,您需要排除arguments的第一项,因为这是包含所有项的数组。

let args = Array.from(arguments).slice(1);
//                              ^^^^^^^^^

答案 1 :(得分:2)

在箭头函数中,隐式对象arguments不存在,因此使用关键字function声明函数,同样,您需要在函数内返回函数includes的结果。函数filter的处理程序。

const removeFromArray = function() {
    let [arr, ...args] = Array.from(arguments);
    return arr.filter(function (item) {
        return !args.includes(item);
    });
}

console.log(removeFromArray([1,2,3,4], 2, 3));

答案 2 :(得分:0)

为要删除的项目添加第二个参数。

const removeFromArray = (arr, toBeRemoved) => {
    return arr.filter(item => !toBeRemoved.includes(item));
}

示例调用:

const array = [1, 2, 3, 4]
const newArray = removeFromArray(arr, [2, 3])
console.log(newArray) // [1, 4]

答案 3 :(得分:-1)

将其粘贴到Array.prototype上,可能在其他地方使用

Array.prototype.remove = function(...args) {
  return this.filter(v => !args.includes(v));
}