Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function pickDeep(data, keys) {
- return _.reduce(data, function(result, value, key, collection) {
- var val = null;
- if (_.isObject(value)) {
- val = pickDeep(value, keys);
- } else {
- if (keys.indexOf(key) > -1) {
- val = value;
- }
- }
- if ( (!_.isNull(val) && !_.isObject(val))
- || (_.isObject(val) && !_.isEmpty(val))) {
- if (_.isArray(result)) {
- result.push(val);
- } else {
- result[key] = val;
- }
- }
- return result;
- }, (_.isArray(data) ? [] : {}));
- };
- var data = {
- a: 5,
- b: 6,
- c: 7,
- d: {
- a: 65,
- z: 6,
- d: {
- a: 65,
- k: 5
- }
- },
- e: [
- {a : 5},
- {b : 6},
- {c : 7}
- ],
- f: [
- {
- b : [ { a: 5, z: 5 } ],
- c : 6
- },
- {
- g: 0
- }
- ]
- };
- console.log(pickDeep(data, ['a', 'c']));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement