
Juan Pablo Betancur
PreguntaCómo puedo comparar si dos objetos son iguales pero provienen de referencias distintas?
Ejp:
var a = {name: ‘Example’};
var b = {name: ‘Example’};
console.log(a===b);//false pero tienen Exactamente la misma estructura y valores.

Juan Pablo Betancur
@him122 Está brutal ese tutorial. Muy últil. Gracias!!

Mauricio Galvez
Hice este tutorial explicándolo: https://platzi.com/tutoriales/1339-fundamentos-javascript/7308-comparacion-de-objetos-en-js/

Jesus Amador
Ocupas solucionarlo manual o con un poco de ayuda? https://lodash.com/docs/4.17.15#isEqual, ya que si bien comparar objetos de diferentes referencias se pone interesante, que tal si el objeto tiene otro objeto dentro :) ? ,
Este es un ejemplo que me encontre en internet
function deepEqual(object1, object2) { const keys1 = Object.keys(object1); const keys2 = Object.keys(object2); if (keys1.length !== keys2.length) { return false; } for (const key of keys1) { const val1 = object1[key]; const val2 = object2[key]; const areObjects = isObject(val1) && isObject(val2); if ( areObjects && !deepEqual(val1, val2) || !areObjects && val1 !== val2 ) { return false; } } return true; } function isObject(object) { return object != null && typeof object === 'object'; }
Donde verificán los valores de cada llave pero también verifican si el valor es un objeto para hacer una concurrencia

CRISTIAN BARBERO PÉREZ
Cuando haces values(a) o keys(a) te devuelve un array con todos ellos, no es necesario que lo recorras manualmente.
Además acabo de darme cuenta que también puedes compararlos así:
a[0] === b[0] //true

Juan Pablo Betancur
Gracias @ceporro !!. Técnicamente tendría que recorrer ambos objetos y comparar cada uno de sus valores.

CRISTIAN BARBERO PÉREZ
Es curioso porque tomando las llaves y los valores también da false:
keys(a) === keys(b) //false values(a) === values(b) //false
Si abres el objeto keys(a) o keys(b) verás que no son simplemente el texto, por lo que tienes que comparar lo siguente:
values(a)[0] === values(b)[0] //true keys(a)[0] === keys(b)[0] //true