我试图使用函数的其他参数过滤函数的第0个参数。循环和过滤器函数似乎正在工作,但问题似乎是循环不会一直循环。我不确定在这种情况下发生了什么。这是代码:
function destroyer(arr) {
var args = Array.from(arguments);
args.shift();
function destroyer(value) {
for (i = 0; i <= args.length; i++) {
return value != args[i];
}
}
return arguments[0].filter(destroyer);
}
destroyer([1, 2, 3, 1, 2, 30], 2, 3);
输出为[1, 3, 1, 30]
。
答案 0 :(得分:0)
尝试这样做:
function destroyer(arr) {
var args = Array.from(arguments);
args.shift();
function destroyer(value) {
for (i = 0; i <= args.length; i++) {
if(value == args[i])
return false; //If element is found, don't return
}
return true; //Element not found in args
}
return arguments[0].filter(destroyer);
}
destroyer([1, 2, 3, 1, 2, 30], 2, 3);
编辑:为什么你的方法不起作用?
问题出在这一部分:
问题出在你的退货声明中。
for (i = 0; i <= args.length; i++) {
return value != args[i];
}
一看到它就会返回布尔值,将数组中的值与args数组中的第一个值进行比较,即它只与第一个值进行比较。