我正在解决一个编码练习,遇到了一个有趣的问题。我试图通过参数过滤数组(我事先不知道会有多少个参数)。因此,函数的第一个参数始终是数组,然后是需要过滤的随机整数。
我想我可以通过在过滤器函数内嵌套一个for循环来解决此问题,但到目前为止,它仅按第一个参数进行过滤,而忽略第二个参数。这是由于使用return false/true
吗?如果是这样,我该怎么用呢?
function destroyer(arr) {
var output = [];
for (var y = 1; y < arguments.length; y++) {
output.push(arguments[y]);
}
function destroy(value) {
for (var x = 0; x < output.length; x++) {
if (value === output[x]) {
return false;
} else {
return true;
}
}
}
return arr.filter(destroy);
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
谢谢您的帮助
请将return true
for移至函数末尾,因为只有发现了不需要的值时,for循环才应停止。
function destroyer(arr) {
var output = [];
for (var y = 1; y < arguments.length; y++) {
output.push(arguments[y]);
}
function destroy(value) {
for (var x = 0; x < output.length; x++) {
if (value === output[x]) {
return false;
}
}
return true;
}
return arr.filter(destroy);
}
document.write(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句