var input = [
{field1: value, field2: value, field3: value, field4: value},
{field1: value, field2: value, field3: value, field4: value},
{field1: value, field2: value, field3: value, field4: value}
];
/* Generic function to get key-value pair form array of object.
input >> is array of object.
keys >> array of string keys.
isNotRequired >> boolean flag whether output contains the keys which are provided or the keys except which are provided.
*/
function getKeyValues(input, keys, isNotRequired) {
if (!keys || !keys.length) {
return input;
}
return _.reduce(input, function(output, values) {
output.push(_.reduce(values, function(object, value, key) {
if (!isNotRequired) {
if (keys.indexOf(key) > -1) {
object[key] = value;
}
} else if (keys.indexOf(key) === -1) {
object[key] = value;
}
return object;
}, {}));
return output;
}, []);
}
//In your example hot to use the function:
var FirstArrayWithField1AndField2 = getKeyValues(input,['field1','field2']);
var SecondArrayWithoutField1AndField2 = getKeyValues(input,['field1','field2'],true);