Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript _.chain-下划线JS_Javascript_Underscore.js - Fatal编程技术网

Javascript _.chain-下划线JS

Javascript _.chain-下划线JS,javascript,underscore.js,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 是否可以使用u.chain()函数来清理此代码?我试图在下面编写代码,但它给出了一个类型错误 var arr = _.

这个代码很好用

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
是否可以使用u.chain()函数来清理此代码?我试图在下面编写代码,但它给出了一个类型错误

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();

只需从
.chain()
.value()
中的每个函数中删除第一个参数(
arr
)(因为它们现在是从链中收集的):

您还可以通过在
函数和
范围
函数之间拆分
范围参数
(即
1
1000
),使其更加简洁:

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();
它可以工作,但我不确定最后一个在代码可读性方面是否是个好主意

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();