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