编写此javascript过滤器代码的更好方法是?

时间:2017-12-15 19:11:43

标签: javascript ecmascript-6

一个拒绝函数,它传递一个数组数组的子数组,应该拒绝该子数组中的任何内容。如果有办法只写一个拒绝函数并消除greaterthanvalues函数及其结果。

如何进一步缩短此代码。任何帮助表示赞赏。

var numbers = [0,1,2,3,4,5,6,7,8,9];
var greaterthanvalues = (numbers, value) => numbers.filter((number) => number > value )
var t = greaterthanvalues(numbers, 5)
var reject = (numbers) =>  
           numbers.filter((number) => number < t[0]) 
reject(numbers, greaterthanvalues)

1 个答案:

答案 0 :(得分:0)

取决于您为何使用此代码执行操作。如果你只是试图打高尔夫球,那么缩短它的一个方法就是删除lambdas的定义并将它们称为内联。像下面的东西

var numbers = [0,1,2,3,4,5,6,7,8,9];
var greaterthanvalues = ((numbers, value) => numbers.filter((number) => number > value ))(numbers, 5)
var reject = ((numbers) => numbers.filter((number) => number < greaterthanvalues[0]))(numbers, greaterthanvalues)

更新了答案以反映您的评论/修改

var numbers = [0,1,2,3,4,5,6,7,8,9];
var reject = (numbers, lambdaRet) => numbers.filter((number) => number < lambdaRet[0])
reject(numbers, ((numbers, value) => numbers.filter((number) => number > value ))(numbers, 5))

说明:如果不重写你正在做的事情的全部想法,这里有一种方法。 Reject是一个以两个数组作为参数的函数。调用此函数时,我将第一个数组作为数字传入,第二个数组作为我定义的lambda函数的结果传入并调用内联。这应该会给你一个很好的基线