JSFiddle - React, Tailwind, and code Playground
by Dieterg
JavaScript
var characters = [{
'name': 'barney',
'age': 42,
'pet': 'dog'
}, {
'name': 'fred',
'age': 35,
'pet': 'dog'
}, {
'name': 'barney',
'age': 42,
'pet': 'cat'
}, {
'name': 'fred',
'age': 35,
'pet': 'fish'
}];
var result = _.reduce(characters, function (prev, current) {
var char = _.find(prev, function (character) {
return character['name'] === current['name'];
});
// Character does not yet exists in the array, push it
if (char === undefined) {
prev.push(current);
} else {
// If char['pet'] is no array, create one
if (!_.isArray(char['pet'])) {
char['pet'] = [char['pet']];
}
// Push the current pets to the previous pets
char['pet'].push(current['pet']);
}
return prev;
}, []); // Initialize an empty array for the prev object
console.log(result);