.filter不是函数错误?

时间:2018-07-13 11:35:47

标签: javascript function filter

创建了一个函数,该函数从数组中返回两个最低的正整数之和。我的问题是,它似乎可以在CodeWars网站上正常工作,但是当我在Chrome控制台中运行它时,.filter不是功能错误。我怀疑它在箭头功能中存在语法错误,但我无法终生解决!

function sumTwoSmallestNumbers(numbers) {
  const filter = numbers.filter(x => x > -1).sort((a, b) => a - b);
  return filter[0] + filter[1];
}

sumTwoSmallestNumbers(544, 32654, 34297, 9237, 343, 98); // 441

4 个答案:

答案 0 :(得分:2)

您必须使用如下数组:

function sumTwoSmallestNumbers(numbers) {
  const filter = numbers.filter(x => x > -1).sort((a, b) => a - b);
  return filter[0] + filter[1];
}

console.log(sumTwoSmallestNumbers([544, 32654, 34297, 9237, 343, 98])); // 441

答案 1 :(得分:1)

在JavaScript中,filter是在数组上实现的方法。您必须以数组形式传递参数(numbers

function sumTwoSmallestNumbers(numbers) {
  const filter = numbers.filter(x => x > -1).sort((a, b) => a - b);
  return filter[0] + filter[1];
}

console.log(sumTwoSmallestNumbers([544, 32654, 34297, 9237, 343, 98])); 

答案 2 :(得分:1)

您需要传递一个类似的数组,

function sumTwoSmallestNumbers(numbers) {
  const filter = numbers.filter(x => x > -1)
  filter.sort((a, b) => a - b);
  return filter[0] + filter[1];
}

console.log(sumTwoSmallestNumbers([544, 32654, 34297, 9237, 343, 98])); // 441

或者,在ES6中,您可以使用spread这样的运算符,

    function sumTwoSmallestNumbers(...numbers) {
      const filter = numbers.filter(x => x > -1)
      filter.sort((a, b) => a - b);
      return filter[0] + filter[1];
    }

    console.log(sumTwoSmallestNumbers(544, 32654, 34297, 9237, 343, 98)); // 441

答案 3 :(得分:1)

使用Rest parameters将不确定数量的参数表示为数组。

function sumTwoSmallestNumbers(...numbers) {
  const filter = numbers.filter(x => x > -1).sort((a, b) => a - b);
  return filter[0] + filter[1];
}

console.log(sumTwoSmallestNumbers(544, 32654, 34297, 9237, 343, 98));