1
resposta

Usar Spread Operator sem que os dados se repitam na lista

Como eu faria uma lista de aliados sem que eles repetissem na tabela do console?

const characteres = 
[
    {
        name: "Frodo",
        class: "Rogue",
        level: 5,
        skills: ["Stealth", "Sneak", "Dodge"],
        levelUp:function(exp){
            this.level += exp
        },
        allies:
        [
            {
                name: "Gandalf",
                class: "Mage",
                level: "20"
            },
            {
                name: "Aragorn",
                class: "Warrior",
                level: "15"
            },
            {
                name: "Legolas",
                class: "Archer",
                level: "17"
            },
            {
                name: "Gimli",
                class: "Warrior",
                level: "17"
            }
        ],
        status: "Alive"
    },
    {
        name: "Legolas",
        class: "Archer",
        level: 17,
        skills: ["Shooting", "Dodge", "Stealth"],
        levelUp:function(exp){
            this.level += exp
        },
        allies:
        [
            {
                name: "Gandalf",
                class: "Mage",
                level: "20"
            },
            {
                name: "Aragorn",
                class: "Warrior",
                level: "15"
            },
            {
                name: "Frodo",
                class: "Rogue",
                level: "5"
            },
            {
                name: "Gimli",
                class: "Warrior",
                level: "17"
            }
        ],
        status: "Alive"
    }
]

const alliesList = [...characteres[0].allies, ...characteres[1].allies];

console.table(alliesList);

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oi, Lucas! Tudo bem?

Desculpa a demora por um retorno.

Para evitar que os aliados se repitam na tabela do console, podemos utilizar o método filter() para remover os elementos duplicados. Uma forma de fazer isso é criar um novo array vazio e, para cada elemento da lista original, verificar se ele já existe no novo array. Se não existir, adiciona-se o elemento. Caso contrário, não faz nada.

Segue abaixo um exemplo de como fazer isso:

const alliesList = [...characteres[0].allies, ...characteres[1].allies];

const uniqueAlliesList = [];

alliesList.forEach((ally) => {
  const isDuplicate = uniqueAlliesList.some((uniqueAlly) => uniqueAlly.name === ally.name);
  if (!isDuplicate) {
    uniqueAlliesList.push(ally);
  }
});

console.table(uniqueAlliesList);

Espero ter ajudado na compreensão do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓