为过滤器编写条件的最短方法是什么?

时间:2018-03-07 08:39:13

标签: javascript arrays filter ecmascript-6 higher-order-functions

为javascript filter方法编写条件的最短方法是什么?

我知道这一点:array.filter(elem => elem > 2);但我知道即使不指定elem参数也可以写这个。

array.filter($1 > 2)或者像这样。

4 个答案:

答案 0 :(得分:1)

array.filter(c)可能是过滤器的最小条件。

这里c是一个命名函数,它将成为过滤器的回调函数。

var array = [1,2,3,4,5];

c = e => e > 2;

var x = array.filter(c);

console.log(x);

答案 1 :(得分:1)

尝试单行代码,最短的代码是:

array.filter(e => e > 2);

filter()方法

var newArray = arr.filter(callback[, thisArg])

需要回调函数。这是定义测试函数的最短方法。

注意:在swift代码中,有一种方法可以在一个简单的表达式中执行此操作:

array.filter { $0 > 2 }

答案 2 :(得分:0)

最短的将是

array.filter(c); // c for "condition"

这需要您在其他地方定义c方法

function c(elem){
   return elem > 2;
}
// or var c = elem => elem > 2

答案 3 :(得分:0)

最简单的方法是将您的函数存储在变量中并将其传递给filter

const greaterThan2 = x =>
    x > 2

arrays.filter(greaterThan2)

只有更短的版本还有更多好处:

  • 更容易测试
  • 可重复使用
  • 可读

多个参数

如果你的函数有多个参数,你可以currying。再次使用greater的示例:



var numbers = [1, 2, 3, 4, 5]

const greater = b => a =>
  a > b

console.log(
  numbers.filter(greater(2))
)




为了使代码更加流畅,您可以将equal设置为变量,如greaterThan2 = equal(2)



var numbers = [1, 2, 3, 4, 5]

const greater = b => a =>
  a > b

const greaterThan2 = 
  greater(2)

console.log(
  numbers.filter(greaterThan2)
)