var get = require('./get'); var unique = require('./unique'); /** * Select values from an array or an object if they have the attribute value. * - array : * - by( [{a:1,b:1},{a:2,b:2}], "a", 1 ) => [{a:1,b:1}] * - by( [{a:1,b:1},{a:2,b:2}], "a", 11 ) => [] * - by( [{o1:{a:1,b:1}},{o2:{a:2,b:2}}], "o1.a", 1 ) => [{o1:{a:1,b:1}}] * - by( [{o1:{a:1,b:1}},{o2:{a:2,b:2}}], "o1.a", 11 ) => [{o1:{a:1,b:1}}] * - object : * - by( {o:{a:1,b:1}}, "a", 1 ) => [{a:1,b:1}] * - by( {o:{a:1,b:1}}, "a", 11 ) => [] * - by( {o:{o1:{a:1,b:1},o2:{a:2,b:2}}}, "o1.a", 1 ) => [{o1:{a:1,b:1}}] * - by( {o:{o1:{a:1,b:1},o2:{a:2,b:2}}}, "o1.a", 11 ) => [] * @param values Array or object * @param keyName Attribute name * @param keyValue Attribute value * @returns {*} */ function by(values, keyName, keyValue) { if(values == null) { return null; } if(values instanceof Object) { if(values instanceof Array) { var results = []; for(var i=0; i