【问题标题】:Javascript arguments inside a .filter method.filter 方法中的 Javascript 参数
【发布时间】:2016-11-30 14:30:38
【问题描述】:

我正在解决一个问题,我得到一个初始数组(destroyer 函数中的第一个参数),然后是一个或多个参数。我需要从初始数组中删除与这些参数具有相同值的所有元素。

该函数只需要 1 个参数(数组),并且可以有任意数量的附加参数,我可以选择“arguments[index]”。

这是我到目前为止的代码:

function destroyer(arr) {
    newArr= [ ];
    newArr = arr.filter(function(x){
        return x !== arguments[2]; //argumets[2] is equal to 3
    });
    return newArr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
// => returns [1, 2, 3, 1, 2, 3];

但是,如果我输入 3,而不是参数 [2],该函数将返回 [1,2,1,2]。 怎么回事?

此外,如果我不能在循环中包含函数,我如何循环代码来测试所有其他参数?

【问题讨论】:

    标签: javascript loops arguments


    【解决方案1】:

    首先,引用顶部的destroyer 参数。然后在 filter 函数中使用 that

    function destroyer(arr) {
      newArr= [ ]; var args = arguments;
      newArr = arr.filter(function(x){
          return x !== args[2]; //destoryer's arguments[2] is equal to 3
      });
      return newArr;
    }
    
    destroyer([1, 2, 3, 1, 2, 3], 2, 3);
    

    【讨论】:

    • 谢谢!但是我如何不仅检查 args[2],而且检查 args[arr.length-1] 除了 0 之外的其他参数?我可以在过滤器函数中创建一个循环,但是当我使用第一次返回时它会取消...
    • 在您完成所需的一切之前不要返回。我不清楚你需要对循环做什么,所以我不知道如何在这方面为你提供更多帮助。想让我们更多地了解您需要做什么?
    • 我需要删除(过滤)我的参数[0](数组)中的元素以及所有其他参数,我可以拥有任意数量的参数-参数[正整数]。现在,如果“return boolean”为假,.filter 从数组中删除一个元素,我不知道如何循环遍历所有元素,因为循环将取消它看到“return”。
    • 那么您是说数组项必须匹配所有参数吗?没有论据?至少 1 个参数?
    • 向我展示循环的外观,放入有问题的返回和所有内容,我会更好地了解您需要什么。
    【解决方案2】:

    arguments 指的是第二个函数的参数 你可以做这样的事情

            function destroyer(arr) {
        newArr= [ ];
    var args = arguments;
        newArr = arr.filter(function(x){
            return x !== args[2];
        });
        return newArr;
    }
    destroyer([1, 2, 3, 1, 2, 3], 2, 3);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-07
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多