如何在JavaScript中使用一些作为过滤器回调?

时间:2018-01-03 12:01:56

标签: javascript functional-programming

我试图使用some函数作为回调来过滤数组,并且只有元素是另一个数组的乘数。

function sumOfNumbersDivisibleByAnyFunctional(upTo) {
  var numbers = [];
  for(var i = 0;i<=upTo; i +=1){
    numbers.push(i);
  }
  function filterByArr(arr){
    return function (el){
      return arr.some(multiplier => el % multiplier === 0);
    }
  }
return numbers.filter(filterByArr(arguments));
}

但无论我怎么试试,我都会收到错误,说arr.some不是函数。 知道我错过了什么吗?

我也尝试过:

return numbers.filter(noToTest => arguments.some(multiplier => noToTest % multiplier === 0));

如果这叫:

sumOfNumbersDivisibleByAnyFunctional(10,3,5) 

它将创建一个介于0-10之间的数字数组,并仅返回乘数为3或5的数字。

我不认为这应该作为How can I convert the “arguments” object to an array in JavaScript?的副本关闭。如上所述,这是上述代码的问题,但没有回答原始问题。作为参考,我会将问题保持开放,并在答案中解释正确的解决方案。

0 个答案:

没有答案