lodash + lodash-deep + mixin filter

by plantface

HTML

<script src="https://cdn.rawgit.com/marklagendijk/lodash-deep/1.6.0/lodash-deep.js"></script>

JavaScript

var posts = [{ term: { name: 'A', process: '123A' } }, 
             { term: { name: 'B', process: '123B' } }, 
             { term: { name: 'C', process: '123C' } }];

_.mixin({
    'filterByValues': function (collection, key, values) {
        return _.filter(collection, function (o) {
            return _.contains(values, resolveKey(o, key));
        });
    }
});

function resolveKey(obj, key) {
    if (obj == null || key == null) {
        return undefined;
    }
    var resolved = undefined;
    if (typeof key == 'function') {
        resolved = key(obj);
    } else if (typeof key == 'string') {
        resolved = obj[key];
        if (resolved == null && key.indexOf(".") != -1) {
            resolved = _.deepGet(obj, key);
        }
    }
    return resolved;
}

var result = _.filterByValues(posts, 'term.process', ['123A', '123C']);

console.info('result', result);