Comparar objetos em JavaScript
-
Compare objetos usando a função
JSON.stringify()
em JavaScript - Compare objetos manualmente em JavaScript
Este tutorial discutirá como comparar objetos manualmente ou usando a função JSON.stringify()
em JavaScript.
Compare objetos usando a função JSON.stringify()
em JavaScript
Comparar variáveis em JavaScript é relativamente fácil; precisamos apenas usar o operador de comparação ===
entre duas variáveis. As variáveis podem ser de qualquer tipo de dados, como strings e inteiros.
O operador de comparação retorna um booleano, que pode ser true
ou false
dependendo das variáveis que estão sendo comparadas. Por exemplo, vamos comparar duas variáveis de um tipo de string usando o operador de comparação.
Veja o código abaixo.
var a = 'Apple';
var b = 'Apple';
console.log(a === b)
Produção:
true
Na saída, o booleano true
indica que as duas variáveis são idênticas. Da mesma forma, você também pode comparar números. Agora vamos falar sobre a comparação de objetos em JavaScript.
A comparação de objetos não é fácil porque eles contêm vários valores e também podem conter objetos dentro deles. O método rápido e fácil de comparar dois objetos é usar a função JASON.stringify()
. A desvantagem deste método é que a ordem das propriedades importa em comparação.
Esta função compara a primeira propriedade de um objeto com a primeira propriedade do outro objeto e assim por diante. Se alterarmos a ordem das propriedades em um dos objetos, este método não funcionará. Por exemplo, vamos comparar dois objetos usando a função JSON.strigify()
.
Veja o código abaixo.
const fruit1 = {
name: 'Apple',
price: '2'
};
const fruit2 = {
name: 'Apple',
price: '2'
};
console.log(JSON.stringify(fruit1) === JSON.stringify(fruit2))
Produção:
true
Neste código, estamos comparando dois objetos contendo duas propriedades cada. Pela saída, os dois objetos são iguais. Agora, vamos alterar a ordem das duas propriedades em um objeto e, em seguida, compará-lo com o outro usando a função JSON.stringify()
.
Veja o código abaixo.
const fruit1 = {
name: 'Apple',
price: '2'
};
const fruit2 = {
price: '2',
name: 'Apple'
};
console.log(JSON.stringify(fruit1) === JSON.stringify(fruit2))
Produção:
false
Na saída, o resultado é false
. Mudamos a ordem das propriedades do segundo objeto; esta é a desvantagem deste método.
Compare objetos manualmente em JavaScript
O método acima tem uma desvantagem, então podemos fazer nossa própria função para comparar dois objetos, de forma que não tenhamos que nos preocupar com a ordem das propriedades dos objetos.
Por exemplo, vamos fazer uma função para comparar os objetos acima em JavaScript. Veja o código abaixo.
function ObjCompare(obj1, obj2) {
if (obj1.name === obj2.name && obj1.price === obj2.price) {
return true;
};
return false;
}
const fruit1 = {
name: 'Apple',
price: '2'
};
const fruit2 = {
price: '2',
name: 'Apple'
};
console.log(ObjCompare(fruit1, fruit2))
Produção:
true
No código acima, fizemos a função ObjCompare()
, comparando dois objetos de acordo com suas propriedades independentemente de sua ordem. A função retorna true
apenas quando o nome e o preço dos dois objetos são iguais; caso contrário, ele retornará false
.
Você também pode fazer sua própria função para comparar várias propriedades ou comparar uma propriedade que você gostaria de comparar de todas as propriedades disponíveis. Você também pode fazer outra função para comparar mais de dois objetos ao mesmo tempo.
Agora, considere que temos dois objetos com muitas propriedades e queremos comparar todas essas propriedades. Fazer esse tipo de função levará muito tempo.
Em vez disso, podemos usar a função Object.keys()
para obter todas as chaves ou propriedades de uma função e compará-las usando um loop. Se todas as propriedades forem iguais, a função retornará true
; caso contrário, ele retornará false
.
Por exemplo, vamos fazer esta função e testá-la com os dois objetos acima. Veja o código abaixo.
function ObjCompare(obj1, obj2) {
const Obj1_keys = Object.keys(obj1);
const Obj2_keys = Object.keys(obj2);
if (Obj1_keys.length !== Obj2_keys.length) {
return false;
}
for (let k of Obj1_keys) {
if (obj1[k] !== obj2[k]) {
return false;
}
}
return true;
}
const fruit1 = {
name: 'Apple',
price: '2',
color: 'red'
};
const fruit2 = {
price: '2',
name: 'Apple',
color: 'red'
};
console.log(ObjCompare(fruit1, fruit2))
Produção:
true
Neste programa, a primeira instrução if
dentro da função ObjCompare()
é usada para verificar o comprimento das propriedades ou chaves dentro dos dois objetos.
Se eles não forem iguais, a função retornará false
e não se moverá para o loop. Este método funciona bem mesmo se alterarmos a ordem das propriedades ou as chaves de qualquer um dos objetos. Você também pode alterar esta função para comparar três ou mais objetos por vez.
Artigo relacionado - JavaScript Object
- Pesquisar objetos de um array em JavaScript
- Converter objeto em string em JavaScript
- Converter objeto JavaScript em JSON
- Declaração de array vs objeto de JavaScript
- Encontre o índice do objeto no array JavaScript