javascript在数组过滤器中嵌套for循环
javascript nesting a for loop inside an array filter
我正在解决一个编码练习,遇到了一个有趣的问题。我正在尝试通过参数筛选数组(我事先不知道会有多少个参数)。所以我函数的第一个参数总是一个数组,后面跟着一个随机数的整数,我需要过滤掉。
我想我可以通过在过滤函数中嵌套一个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循环才会停止。
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));
这比它需要的要复杂得多。这在更少的代码行中做同样的事情,我认为它更明确,更容易阅读
function destroyer(arr) {
// get all the arguments after the initial array
var output = Array.prototype.slice.call(arguments, 1);
// filter the output
return arr.filter(function destroy(value) {
// only return the numbers that aren't in the output array
return output.indexOf( value ) < 0;
});
// profit.
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
相关文章:
- 嵌套 For 循环以重置单选组
- 基于 Javascript 的嵌套 for 循环以及对象
- 获取嵌套 for 循环中的值 - node.js、javascript、redis、Q 库
- Javascript中嵌套for循环与数组函数的性能
- javascript在数组过滤器中嵌套for循环
- javascript 中带有表输出的嵌套 for 循环的问题
- Javascript中简单嵌套for循环的问题
- 嵌套For循环传递变量
- 为什么我的嵌套for循环中的代码没有被执行?
- 嵌套for循环和备用映射方法
- 在嵌套for循环中添加属性会导致每个父for循环的值相同
- 我怎样才能在不让第一个循环循环到第二个循环的情况下嵌套for循环呢?
- 嵌套for循环中的变量定义
- 如果element.getAttribute('class')发生变化,则退出嵌套for循环
- 如何用函数式风格实现嵌套For循环
- 数据绑定点击不工作在Chrome嵌套for循环
- Coffeescript翻译-嵌套for循环
- 嵌套for循环MongoDB中的Javascript异步
- 在对象中循环,并在数组中循环的嵌套for循环
- Javascript : 省略 在嵌套 For 循环中初始化