我希望这个函数能够工作并生成数组 [1,1],为什么它不工作?
function destroyer(arr) {
return arr.reduce(function(a,b){
if (arguments.slice(1).every(function(arg){
return arg !== b;
})) a.push(b);
return a;
}, []);
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
最佳答案
我建议
function destroyer(arr) {
return [].slice.call(arguments, 1).reduce(function(arr, num) {
return arr.filter(function(item) {
return num !== item;
});
}, arr);
}
或者,在 ES6 中,
function destroyer(arr, ...unwanted) {
return unwanted.reduce((arr,num) => arr.filter(item => num !== item), arr);
}
关于javascript - 删除数组中等于后续参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31867317/