Igualdade entre Objetos

Comparando objetos em JavaScript como .some() e JSON.stringify()

Dan Vitoriano
2 min readMar 9, 2020
Compare propriedades dos objetos

Para sabermos se um objeto é igual a outro, precisamos ter um método de comparação. Este método, em geral, deve ficar junto da classe responsável por criar os objetos.

Em linguagens como o Java, o método equals() é herdado desde a classe mãe de todas as outras, a Object(), e pode ser reescrito pelas classes mais específicas para aplicar o padrão de comparação desejado.

No mundo JavaScript, não existe um nome padrão para esse tipo de método — o mais utilizado é equals ou isEquals.

Dentro da classe construtora de um determinado tipo de objeto, crie o método para comparação:

isEquals(objeto) {        
return JSON.stringify(this) == JSON.stringify(objeto)
}

O método stringify da classe JSON transforma um objeto em uma string. Assim, é possível compararmos de forma fácil se dois objetos são iguais. Sendo iguais, eles produziram a mesma string ao serem convertidos. Se for igual, ele retornará um booleano true.

Para utilizar o método isEquals, basta chamá-lo passando o objeto que deverá ser comparado:

objetoExistente => objeto.isEquals(objetoExistente)

Por exemplo, se você tem uma lista de objetos e quer certificar-se de não adicionar nenhum objeto duplicado, pode utilizar os métodos filter() e some() de Array para aplicar a comparação:

lista => lista.filter(objeto => 
!lista.some(objetoExistente =>
objeto.isEquals(objetoExistente)
)
)

--

--

Dan Vitoriano
Dan Vitoriano

Written by Dan Vitoriano

📱💻 Engenheiro de software, professor e LinkedIn Creator. Tutoriais e artigos sobre tecnologia e programação. Eu era o Idman na blogosfera gay dos anos 2000.

No responses yet