Planting values in lodash wrappers
The plant() function let's us build reusable lodash wrappers.
by Adam Boduch
HTML
<script src="https://rawgit.com/lodash/lodash/3.4.0/lodash.min.js"></script>
JavaScript
function plantValue(wrapper, value) {
if (_.isUndefined(value)) {
return wrapper;
} else {
return wrapper.plant(value);
}
}
function odds(wrapper, value) {
return plantValue(wrapper.filter(function(item) {
return item % 2;
}), value);
}
function evens(wrapper, value) {
return plantValue(wrapper.reject(function(item) {
return item % 2;
}), value);
}
function sum(wrapper, value) {
return plantValue(wrapper, value)
.reduce(function(result, item) {
return result + item;
});
}
var collection = _.shuffle(_.range(100));
var limitWrapper = _([])
.sortBy()
.dropRightWhile(function(item) {
return item > 50;
});
console.clear();
console.log('odds', odds(limitWrapper, collection).value());
console.log('evens', evens(limitWrapper, collection).value());
var oddsWrapper = odds(limitWrapper);
var evensWrapper = evens(limitWrapper);
console.log('odds sum', sum(oddsWrapper, collection));
console.log('evens sum', sum(evensWrapper, collection));