user9883883
user9883883

Reputation:

Merge arrays of objects manteining all the properties

I have 2 array of objects and I want to merge them.

var fruits = [
    {name: 'pear', cultivar: '', color: 'yellowgreen', size: '6'},
    {name: 'apple', cultivar: 'Annurca', color: 'red', size: '5'},
    {name: 'apple', cultivar: 'fuji', color: 'red', size: '4'}
]; 

var quantity = [
    {name: 'pear', number: '15'},
    {name: 'apple', number: '50', scad: '2018'},
    {name: 'apple', number: '50'}
]; 

What I want is:

var all = [
    {name: 'pear', cultivar: '', color: 'yellowgreen', size: '6', number: '15', scad: 'NaN'},
    {name: 'apple', cultivar: 'Annurca', color: 'red', size: '5', number: '50', scad: '2018'},
    {name: 'apple', cultivar: 'fuji', color: 'red', size: '4', number: '50', scad: 'NaN'}
]; 

Each element is complete with all the properties: name, cultivar, color, size, number and scad (which is NaN if the property doesn't exist).

Upvotes: 0

Views: 48

Answers (1)

CertainPerformance
CertainPerformance

Reputation: 370599

Just .map the arrays together:

var fruits = [
    {name: 'pear', cultivar: '', color: 'yellowgreen', size: '6'},
    {name: 'apple', cultivar: 'Annurca', color: 'red', size: '5'},
    {name: 'apple', cultivar: 'fuji', color: 'red', size: '4'}
]; 

var quantity = [
    {name: 'pear', number: '15'},
    {name: 'apple', number: '50', scad: '2018'},
    {name: 'apple', number: '50'}
];

const all = fruits.map((fruit, i) => (
  { ...fruit, scad: NaN, ...quantity[i] }
));
console.log(all);

Upvotes: 2

Related Questions