Merge Objects and Array of Objects Using Spread Operator

by ClarenceDowns

JavaScript

// merging objects
const product = {
  name: 'Milk',
  packaging: 'Plastic',
  price: '5$'
}
const manufacturer = {
  name: 'Company Name',
  address: 'The Company Address'
}

const productManufacturer = { ...product,
  ...manufacturer
};
console.log(productManufacturer);
// outputs { name: "Company Name", packaging: "Plastic", price: "5$", address: "The Company Address" }

// merging an array of objects into one
const cities = [{
    name: 'Paris',
    visited: 'no'
  },
  {
    name: 'Lyon',
    visited: 'no'
  },
  {
    name: 'Marseille',
    visited: 'yes'
  },
  {
    name: 'Rome',
    visited: 'yes'
  },
  {
    name: 'Milan',
    visited: 'no'
  },
  {
    name: 'Palermo',
    visited: 'yes'
  },
  {
    name: 'Genoa',
    visited: 'yes'
  },
  {
    name: 'Berlin',
    visited: 'no'
  },
  {
    name: 'Hamburg',
    visited: 'yes'
  },
  {
    name: 'New York',
    visited: 'yes'
  }
];

const result = cities.reduce((accumulator, item) => {
  return {
    ...accumulator,
    [item.name]: item.visited
  }
}, {});

console.log(result);
/* outputs
Berlin: "no"
Genoa: "yes"
Hamburg: "yes"
Lyon: "no"
Marseille: "yes"
Milan: "no"
New York: "yes"
Palermo: "yes"
Paris: "no"
Rome: "yes"
*/