Removendo objetos duplicados de dentro de um array usando Set()

O dinheiro não representa tal valor como os homens colocaram em cima dele. Todo o meu dinheiro foi investido nas experiências com as quais eu fiz descobertas novas permitindo a humanidade de ter uma vida um pouco mais fácil. Nikola Tesla

set

É bem comum em aplicações da vida real ou até mesmo projetos pessoais, trabalharmos com arrays e objetos. Normalmente o frontend trabalha consumimos APIs e muitas vezes as respostas que recebemos são arrays de objetos.

Por exemplo podemos consumir a API do github para obtermos o seguinte resultado:

const data = fetch(`https://api.github.com/users/mayconbalves/repos?per_page=50`).then(res => res.json()).then(resp => resp)
console.log(data) // Array(43)

Obs: você pode colar esse código no console do seu navegador, note que ele devolve um array com 43 objetos.

Imagine que recebemos do backend uma lista de nome e sobrenome:

const persons = [
  { id: 1, name: "maycon", lastName: "alves" },
  { id: 2, name: "michael", lastName: "jackson" },
  { id: 3, name: "michael", lastName: "jordan" },
  { id: 1, name: "maycon", lastName: "alves" }
]

Podemos sim ter nomes repetidos porém, o primeiro e o último id são iguais, por tanto são a mesma entidade, e temos a regra de não mostrar em tela objetos iguais. Para remover objetos iguais iremos usar o objeto Set()

O objeto set permite que armazenemos valores únicas primitivos ( string, number, boolean, undefined, null e symbol ) a referência de objetos. Leia um pouco mais sobre Set()

Já escrevi um artigo sobre como remover propriedades iguais de dentro de um array de forma bem simples usando o Set clique aqui para ler.

Para remover esses objetos duplicados existem algumas maneiras, porém usando o set é bem simples:

export default function App() {
  const setPerson = new Set();
  const persons = [
    { id: "1", name: "maycon", lastName: "alves" },
    { id: "2", name: "michael", lastName: "jackson" },
    { id: "3", name: "michael", lastName: "jordan" },
    { id: "1", name: "maycon", lastName: "alves" }
  ];

  const filterPerson = persons.filter((person) => {
    const duplicatedPerson = setPerson.has(person.id);
    setPerson.add(person.id);
    return !duplicatedPerson;
  });

  return (
    <div className="App">
      <h1>No repeat values</h1>
      <ul>
        {filterPerson.map((person) => {
          return (
            <li key={person.id} value={person.name}>
              <p>{person.name}</p>
            </li>
          );
        })}
      </ul>
    </div>
  );
}

Espero que curtam, lembrem qualquer dúvida, critica ou feedback basta me chamar para uma conversa ou deixar aqui nos comentários. Abraços quentinhos para vocês !!

Como Usar nvm no WindowsPost AnteriorPróximo Post