Digamos que tenemos una matriz de números en Javascript:
const arr = [1,3,2,6,5,3];Lo ordenamos usando el método de ordenación nativo:
arr.sort(); // OR arr.sort((a, b) => a - b)Ahora, ¿cómo es que la matriz ordenada y no ordenada son iguales entre sí?
console.log(arr === arr.sort()) // logs trueSoy consciente de que el método de clasificación no crea una nueva matriz, por lo que ambos apuntarían a la misma dirección en la memoria.
Sin embargo, el orden de sus elementos es diferente, y dado que las matrices son objetos similares a listas, con índices enumerables, el orden de los elementos sí importa a diferencia de los objetos.
Entonces, si todo lo anterior es cierto, ¿cómo son estrictamente iguales?
const arr = [1, 3, 2, 6, 5, 3]; arr.sort(); // OR arr.sort((a, b) => a - b) console.log(arr === arr.sort()) // logs truearr === arr.sort() compara la referencia de las matrices. arr.sort es una clasificación en el lugar. No crea una nueva matriz. arr y arr.sort() hacen referencia al mismo objeto.
Son estrictamente iguales porque ambos tipos (objeto) son iguales y ambos valores (referencias) son iguales.
La comparación no considera los valores de las matrices.
[1,2,3] === [1,2,3] devuelve false , porque las referencias son diferentes.