Immutable copy of an Array or object

by Pritesh Patel

JavaScript

const heroes = [
  { name: 'Wolverine',      family: 'Marvel',    isEvil: false },
  { name: 'Deadpool',       family: 'Marvel',    isEvil: false },
  { name: 'Magneto',        family: 'Marvel',    isEvil: true  },
  { name: 'Charles Xavier', family: 'Marvel',    isEvil: false },
  { name: 'Batman',         family: 'DC Comics', isEvil: false },
  { name: 'Harley Quinn',   family: 'DC Comics', isEvil: true  },
  { name: 'Legolas',        family: 'Tolkien',   isEvil: false },
  { name: 'Gandalf',        family: 'Tolkien',   isEvil: false },
  { name: 'Saruman',        family: 'Tolkien',   isEvil: true  }
]
/* const newHeroes = JSON.parse(JSON.stringify(heroes)) */
/* const newHeroes = heroes.slice().map(h => {
  h.name = h.name.toUpperCase()
  return console.log(h);
}); */
const newHeroes= JSON.parse(JSON.stringify(heroes)).map(h => {
  h.name = h.name.toUpperCase()
  return console.log(h);
});
console.log(newHeroes);
console.log(heroes);