我正在尝试使用过滤器删除数组中的元素,例如:
destroyer([1, 2, 3, 1, 2, 3], 2, 3); // [1,1]
destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3) // should return [1, 5, 1]
function destroyer(arr) {
checker = Array.prototype.slice.call(arguments, 1, arguments.length);
arr.filter(desFilter);
function desFilter(value) {
console.log(checker, value, checker.indexOf(value) >= 0);
return checker.indexOf(value) >= 0;
}
console.log(arr);
return arr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3); // it would return [1, 2, 3, 1, 2, 3]
最佳答案
这样使用:
function destroyer(arr) {
checker = Array.prototype.slice.call(arguments, 1, arguments.length);
arr = arr.filter(desFilter); // Change here
function desFilter(value) {
console.log(checker, value, checker.indexOf(value) >= 0);
return checker.indexOf(value) >= 0;
}
console.log(arr);
return arr;
}
原因
函数arr.filter()
不会更改原始数组,但会返回替换后的数组。所以你需要在返回函数中返回它。在上面的代码中,我将 arr
替换为 arr.filter
的结果。
关于javascript - javascript 中的参数销毁器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625160/