对我来说有点模糊,但是我正在尝试创建一个简单的函数,该函数需要一个数组和一些参数,并从数组中删除参数。
例如,如果我有一个数组,例如[1,2,3,4]
和参数2,3
,它将作为结果返回[1,4]
。
这是我到目前为止所拥有的:
const removeFromArray = (arr) => {
let args = Array.from(arguments);
return arr.filter(function (item) {
!args.includes(item);
});
}
虽然不起作用。如果我想从数组中删除所有项目,它会起作用,但是如果我只寻找特定的项目,则不会。
即使我提供的参数不属于数组(我希望它忽略那些参数)并且数组中也有字符串,我如何才能使其工作呢?
谢谢!
答案 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));
}