Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

346
Visualizações
Lodash isEqual - How to get keys of objects that differ

I'm trying to obtain an array of keys, that were different as a result of comparing two objects. I was only able to do it using isEqualWith and mapKeys, like so:

const differencies = [];
const objA = {
  a: 1,
  b: 2,
  c: 3
};
const objB = {
  a: 1,
  b: 2,
  c: 100
};

function customizer(objOne, objTwo) {
  if (lodash.isEqual(objOne, objTwo)) {
    return true;
  }

  lodash.mapKeys(objOne, (value, key) => {
    if (value !== objTwo[key]) {
      differencies.push(key);
    }
  });

  return false;
}

lodash.isEqualWith(objA, objB, customizer);
console.log(differencies);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
<script>const lodash = _;</script>

Question is: Is there a better way to get keys of objects that differ using lodash?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Since you only need to compare objects where the keys are identical but values might differ, you can leverage keys() or keysIn() (if you want to also traverse the prototype chain) and remove all entries that do not have a matching value with filter().

const objA = { a: 1, b: 2, c: 4 };
const objB = { a: 1, b: 2, c: 100 };

const differencies = lodash.filter(
  lodash.keys(objA), 
  key => objA[key] !== objB[key]
);
console.log(differencies);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
<script>const lodash = _;</script>

Alternatively using chaining syntax:

const objA = { a: 1, b: 2, c: 4 };
const objB = { a: 1, b: 2, c: 100 };

const differencies = lodash(objA)
  .keys()
  .filter(key => objA[key] !== objB[key]);
console.log(differencies);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
<script>const lodash = _;</script>

For this sort of functionality, Lodash might be an overkill. Simple JavaScript equivalent is Object.keys() and Array#filter():

const objA = { a: 1, b: 2, c: 4 };
const objB = { a: 1, b: 2, c: 100 };

const differencies = Object.keys(objA)
  .filter(key => objA[key] !== objB[key]);
console.log(differencies);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda