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

175
Visualizações
Compare 2 Arrays of Objects

I want to compare 2 Arrays of Objects to find the object or objects which is not matched. In the example below it should output {label: 'Addition', type: 'address', name: 'address_4', defaultValue: 'test'} as this Object is not matched.

const A = [{
    label: 'Street Name',
    type: 'address',
    name: 'address_1',
    defaultValue: 'test1'
  },
  {
    label: 'House Number',
    type: 'address',
    name: 'address_2',
    defaultValue: '1563l1'
  },
  {
    label: 'Addition',
    type: 'address',
    name: 'address_3',
    defaultValue: 'ABC684'
  }
]

const B = [{
    label: 'Street Name',
    type: 'address',
    name: 'address_1',
    defaultValue: 'test1'
  },
  {
    label: 'House Number',
    type: 'address',
    name: 'address_2',
    defaultValue: '1563l1'
  },
  {
    label: 'Addition',
    type: 'address',
    name: 'address_3',
    defaultValue: 'ABC684'
  },
  {
    label: 'Addition',
    type: 'address',
    name: 'address_4',
    defaultValue: 'test'
  }
]

const newSet = A;
const currentSet = B;

let difference = currentSet.filter((page1) => !newSet.find(page2 => page1.name === page2.name))

console.log(difference);

This does not work. It outputs an empty Array. What I'm doing wrong?

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

0

You might by comparing A with B which returns an empty array because there is no element in A which doesn't exist in B instead you should compare B with A.

Below code will return an empty array

const A = [
  {
    label: "Street Name",
    type: "address",
    name: "address_1",
    defaultValue: "test1",
  },
  {
    label: "House Number",
    type: "address",
    name: "address_2",
    defaultValue: "1563l1",
  },
  {
    label: "Addition",
    type: "address",
    name: "address_3",
    defaultValue: "ABC684",
  },
];

const B = [
  {
    label: "Street Name",
    type: "address",
    name: "address_1",
    defaultValue: "test1",
  },
  {
    label: "House Number",
    type: "address",
    name: "address_2",
    defaultValue: "1563l1",
  },
  {
    label: "Addition",
    type: "address",
    name: "address_3",
    defaultValue: "ABC684",
  },
  {
    label: "Addition",
    type: "address",
    name: "address_4",
    defaultValue: "test",
  },
];

let difference = A.filter((page1) => {
  const result = B.find((page2) => page1.name === page2.name);
  return !result;
});

console.log(difference);

You should compare B with A as:

const A = [
  {
    label: "Street Name",
    type: "address",
    name: "address_1",
    defaultValue: "test1",
  },
  {
    label: "House Number",
    type: "address",
    name: "address_2",
    defaultValue: "1563l1",
  },
  {
    label: "Addition",
    type: "address",
    name: "address_3",
    defaultValue: "ABC684",
  },
];

const B = [
  {
    label: "Street Name",
    type: "address",
    name: "address_1",
    defaultValue: "test1",
  },
  {
    label: "House Number",
    type: "address",
    name: "address_2",
    defaultValue: "1563l1",
  },
  {
    label: "Addition",
    type: "address",
    name: "address_3",
    defaultValue: "ABC684",
  },
  {
    label: "Addition",
    type: "address",
    name: "address_4",
    defaultValue: "test",
  },
];

let difference = B.filter((page1) => {
  const result = A.find((page2) => page1.name === page2.name);
  return !result;
});

console.log(difference);

If there is a case where you want to get the difference between two array then you can do as:

const [small, large] = A.length < B.length ? [A, B] : [B, A];
let difference = large.filter((page1) => {
  const result = small.find((page2) => page1.name === page2.name);
  return !result;
});
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