São iguais? | Valchan

São iguais?

Organizando objeto por chave e verificando se são iguais

const exemplo1 = {
	'a': 'arroz',
  	'b': 'balão',
    'c': {
        'd': 'dado'
    }
};

const exemplo2 = {
	'a': 'arroz',
    'c': {
        'd': 'dado'
    },
  	'b': 'balão'
};

const exemplo3 = {
	'a': 'arroz',
  	'c': 'computador'
};

// função que recebe um objeto, divide por propriedades com o Object.keys(), ordena essas propriedades com o .sort(), e então agrupa elas em um novo objeto com o .reduce()
const sortObject = obj => Object.keys(obj).sort().reduce((acumulador, valorAtual) => (acumulador[valorAtual] = obj[valorAtual], acumulador), {});

// função que verifica se ambos objetos são iguais
const isEqual = (obj1, obj2) => JSON.stringify(sortObject(obj1)) === JSON.stringify(sortObject(obj2));

console.log(sortObject(exemplo1));
// Object { a: "arroz", b: "balão", c: Object { d: "dado" } }

console.log(sortObject(exemplo2));
// Object { a: "arroz", b: "balão", c: Object { d: "dado" } }

console.log(sortObject(exemplo3));
// Object { a: "arroz", c: "computador" }

console.log(isEqual(exemplo1, exemplo2)); // true
console.log(isEqual(exemplo2, exemplo3)); // false

Fonte:

Outros jeitos:

Comentários