_.chain - 强调JS

时间:2014-09-20 03:21:16

标签: javascript underscore.js

此代码可以正常使用

var arr = _.range(1,1000);
var parse = _.filter(arr, function(num) {return num%3===0 || num%5===0});
var sum = _.reduce(parse, function(memo, num){ return memo + num; }, 0) //233168

是否可以使用_.chain()函数清除此代码?我试过下面的代码,但它给出了一个Type错误。

var arr = _.range(1,1000);
var sum = _.chain(arr)
        .filter(arr, function(num) {return num%3===0 || num%5===0})
        .reduce(arr, function(memo, num){ return memo + num; }, 0)
        .value();

1 个答案:

答案 0 :(得分:6)

您只需要从arr_.chain()中的每个函数中删除第一个参数(_.value())(因为它们现在从链中收集):< / p>

var arr = _.range(1,1000);
var sum = _.chain(arr)
    .filter(function(num) {return num%3===0 || num%5===0})
    .reduce(function(memo, num){ return memo + num; }, 0)
    .value();

通过在range arguments函数和{{1}之间拆分1(即1000chain),您也可以更简洁一点功能:

range

它有效,但我不确定这个最后一个在代码可读性方面是否是一个好主意。