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