This code works fine
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
Is it possible to use the _.chain() function to clean this code up? I've tried to code below, but it gives a Type error.
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();
You just need to remove the first argument (arr
) from each of the functions you have inside the _.chain()
and _.value()
(as they are now gather from the chain):
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();
And you could also do it a little more concise, by splitting the range arguments
(i.e. 1
and 1000
) between the chain
function and the range
function:
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();
It works, but I'm not sure if this last one is a good idea in terms of code readability.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With