Array.prototype.reduce()
with an object accumulator to combine all objects in both arrays based on the given prop
.Object.values()
to convert the resulting object to an array and return it.const combine = (a, b, prop) => Object.values( [...a, ...b].reduce((acc, v) => { if (v[prop]) acc[v[prop]] = acc[v[prop]] ? { ...acc[v[prop]], ...v } : { ...v }; return acc; }, {}) );
const x = [ { id: 1, name: 'John' }, { id: 2, name: 'Maria' } ]; const y = [ { id: 1, age: 28 }, { id: 3, age: 26 }, { age: 3} ]; combine(x, y, 'id'); // [ // { id: 1, name: 'John', age: 28 }, // { id: 2, name: 'Maria' }, // { id: 3, age: 26 } // ]
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️