Executando verificação de segurança...
1

Perfeito!

Eu menciono no final do post que o map sempre retorna uma array, e caso vc não precisa de uma, o map não é a melhor ferramenta.

No exemplo dos consoles que tu deu, costumo usar o forEach, acho mais prático que o for tradicional.


"...vale lembrar que ao retornar o mesmo objeto, uma alteração neste causa uma mudança em todos os arrays."

Isso daqui eu não sabia, eu achava que o map retornava ou array completamente novo.

Achei a solução de retornar um spread operator do objeto ótima, já que ela cria outro objeto para retornar, em vez de retornar exatamente o que recebeu.

É por isso que esse problema não acontece com objetos alterados no map. Fiz um teste com posição 2, 'kuririn'. Pq assim cai no if e retorna um novo objeto que construí ali dentro:

const characters = [
  { name: 'Goku',        race: 'saiyajin'     },
  { name: 'Cell',        race: 'android'      },
  { name: 'Kuririn',     race: 'terráqueo'    },
  { name: 'Bulma',       race: 'terráqueo'    },
  { name: 'Vegeta',      race: 'saiyajin'     },
  { name: 'Mestre Kame', race: 'terráqueo'    },
  { name: 'Kami-Sama',   race: 'namekuseijin' }
];

const mapeado = characters.map(character => {
  if (character.race === 'terráqueo')
    return {
      name: character.name.toUpperCase(),
      race: character.race
    };
  
  return character;  
});

// nome "kuririn" foi alterado para 'KURIRIN'
console.log(mapeado[2]); // { name: 'KURIRIN', race: 'terráqueo' }

// muda o nome no array original para 'GOKU'
characters[2].name = 'GOKU';

// a alteração não se reflete no outro array
console.log(mapeado[2]); // { name: 'KURIRIN', race: 'terráqueo' }

Obrigado pelo comentário :D

Carregando publicação patrocinada...