这段代码工作正常
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();发布于 2014-09-20 03:32:04
只需将第一个参数(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();通过将range arguments (即1和1000)拆分为chain函数和range函数,您还可以做得更简洁一些:
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();它可以工作,但我不确定最后一个在代码可读性方面是否是个好主意。
发布于 2022-06-23 15:36:29
这是工作,是(IMHO)更清楚一点。
var sum = _(_.range(1000)).chain()
.filter(function (x) { return (x % 3 === 0 || x % 5 === 0) })
.reduce(function (sum, x) { return sum + x }, 0)
.value(); /* try chaining range() and reduce() */我想在这里解决JavaScript考恩是可以的吧?
https://stackoverflow.com/questions/25944870
复制相似问题