Igualdade de arrays e objetos em JavaScript
Em JavaScript, o sinal de igual duplo (==) e o sinal de igual triplo (===) ou igualdade estrita são os dois operadores usados na verificação da igualdade de dois valores. Lembramos que o sinal de igual duplo, ao contrário do sinal de igual triplo, verifica apenas a igualdade dos dois valores, mas não se importa se eles são do mesmo tipo. Por exemplo:
// double equality
const num = 2
const num2 = '2'
console.log(2==2)
// output will be true
// triple equality
const num = 2
const num2 = '2'
console.log(2===2)
// output will be false
Mas quando aplicamos qualquer um desses sinais em uma matriz ou objeto, o comportamento se torna estranho. Por exemplo:
const obj1={
name: 'kenneth',
country:'Nigeria',
age:26
}
const obj2={
name: 'kenneth',
country:'Nigeria',
age:26
}
console.log(obj1 == obj2)
//this outputs false
console.log(obj1 === obj2)
// this still outputs false
A razão é porque as variáveis de objetos e matrizes não armazenam os valores específicos atribuídos a eles diretamente, mas armazenam uma referência ao local original na memória onde a matriz ou objeto é armazenado. Observe o esquema abaixo para melhor compreensão:
Como podemos ver na figura acima, a variável “obj1” armazena a referência da memória onde o objeto real está armazenado, que neste caso é 12456754 (eu inventei esse número para fins de explicação) igual à variável “obj2” que também armazena a referência da memória onde o objeto real está armazenado na memória que é 98537562. Podemos ver que o valor obj1 stores(12456754) é diferente do valor obj2 stores(98537562). Pode ser escrito corretamente assim:
const obj1 = 12456754;
const obj2 = 98537562;
A única maneira de dois objetos ou variáveis de matrizes poderem ser iguais é apenas se igualarmos ou atribuirmos uma nova variável (obj2) a uma matriz ou variável de objeto (obj1). Por exemplo:
const obj1={
name: 'kenneth',
country:'Nigeria',
age:26
}
const obj2 = obj1;
console.log(obj1 == obj2)
// this will output true
console.log(obj1 === obj2)
// this will still be true
NB: Usei apenas objetos em meus exemplos, mas o mesmo motivo e explicação ainda se aplica a arrays.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)