在Javascript中通过带有参数的过滤器循环

时间:2016-04-24 11:06:38

标签: javascript loops arguments

我试图使用函数的其他参数过滤函数的第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]

1 个答案:

答案 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数组中的第一个值进行比较,即它只与第一个值进行比较。