_.chain - 强调JS

pcc*_*cse 5 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
Run Code Online (Sandbox Code Playgroud)

是否可以使用_.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();
Run Code Online (Sandbox Code Playgroud)

Mar*_*nze 6

你只需要删除的第一个参数(arr从你们每个人都在里面的功能)_.chain()_.value()(像现在这样从链聚集):

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();
Run Code Online (Sandbox Code Playgroud)

你也可以通过拆分函数和函数之间的range arguments(ie 11000)来更简洁一些:chainrange

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

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