在 Javascript 中循环使用参数的过滤器

Looping through a filter with arguments in Javascript

本文关键字:参数 过滤器 Javascript 循环      更新时间:2023-09-26

>我试图使用函数的其他参数过滤函数的第零个参数。循环和过滤器函数似乎在工作,但问题似乎是循环没有完全循环。我不确定在这种情况下发生了什么。这是代码:

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]

尝试这样做:

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 数组中的第一个值进行比较时立即返回布尔值,即它仅与第一个值进行比较。