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

335
Visualizações
How to check if an object key is in another object of objects

I have the following objects:

const allMembers = {
    "-Lz8YxHiwp8QZW3TqAFn": {
        "first": "foo",
        "last": "bar",
        "uid": "-Lz8YxHiwp8QZW3TqAFn"
    },
    "-Lz8YxHqQXWoaGOFRLrO": {
        "first": "foo",
        "last": "bar",
        "uid": "-Lz8YxHqQXWoaGOFRLrO"
    },
    "-Lz8YxHsMItaaTVNyQRE": {
        "first": "foo",
        "last": "bar",
        "uid": "-Lz8YxHsMItaaTVNyQRE"
    },
    "-Lz8YxHwuVBMWl0Go6C5": {
        "first": "foo",
        "last": "bar",
        "uid": "-Lz8YxHwuVBMWl0Go6C5"
    },
    "-Lz8YxHy0S-QkDaE1PkX": {
        "first": "foo",
        "last": "bar",
        "uid": "-Lz8YxHy0S-QkDaE1PkX"
    },
}

const attendanceData = {
    "-Lz8YxHiwp8QZW3TqAFn": true,
    "-Lz8YxHqQXWoaGOFRLrO": true,
    "-Lz8YxHsMItaaTVNyQRE": true,
    "-Lz8YxHwuVBMWl0Go6C5": false,
    "-Lz8YxHy0S-QkDaE1PkX": true,
    "-Lz8YxIFA1XGVmaNfNr3": false,
    "-Lz8YxIJVZnIIj7RgEzg": false,
}

I need to clean up the allMembers to only return if it's found as true in attendanceData. Here is my attempt but it's obviously not working. Also the way I'm doing it has to loop the first one over the other times.

const membersHere = Object.keys(allMembers).filter(memEl => Object.keys(attendanceData).find(attendEl => memEl == attendEl));
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

  • Convert the allMembers object into an array of key value pairs using Object.entries.

  • Filter the items that have value true using Array.prototype.filter.

  • Transform the array back to an object using Object.fromEntries.

const 
  allMembers = {'-Lz8YxHiwp8QZW3TqAFn': {first: 'foo',last: 'bar',uid: '-Lz8YxHiwp8QZW3TqAFn'},'-Lz8YxHqQXWoaGOFRLrO': {first: 'foo',last: 'bar',uid: '-Lz8YxHqQXWoaGOFRLrO'},'-Lz8YxHsMItaaTVNyQRE': {first: 'foo',last: 'bar',uid: '-Lz8YxHsMItaaTVNyQRE'},'-Lz8YxHwuVBMWl0Go6C5': {first: 'foo',last: 'bar',uid: '-Lz8YxHwuVBMWl0Go6C5'},'-Lz8YxHy0S-QkDaE1PkX': {first: 'foo',last: 'bar',uid: '-Lz8YxHy0S-QkDaE1PkX'}},
  attendanceData = {'-Lz8YxHiwp8QZW3TqAFn': true,'-Lz8YxHqQXWoaGOFRLrO': true,'-Lz8YxHsMItaaTVNyQRE': true,'-Lz8YxHwuVBMWl0Go6C5': false,'-Lz8YxHy0S-QkDaE1PkX': true,'-Lz8YxIFA1XGVmaNfNr3': false,'-Lz8YxIJVZnIIj7RgEzg': false},
  filteredMembers = Object.fromEntries(
    Object.entries(allMembers).filter(([k]) => attendanceData[k])
  );

console.log(filteredMembers);

You can also do it using Array.prototype.reduce

const 
  allMembers = {'-Lz8YxHiwp8QZW3TqAFn': {first: 'foo',last: 'bar',uid: '-Lz8YxHiwp8QZW3TqAFn'},'-Lz8YxHqQXWoaGOFRLrO': {first: 'foo',last: 'bar',uid: '-Lz8YxHqQXWoaGOFRLrO'},'-Lz8YxHsMItaaTVNyQRE': {first: 'foo',last: 'bar',uid: '-Lz8YxHsMItaaTVNyQRE'},'-Lz8YxHwuVBMWl0Go6C5': {first: 'foo',last: 'bar',uid: '-Lz8YxHwuVBMWl0Go6C5'},'-Lz8YxHy0S-QkDaE1PkX': {first: 'foo',last: 'bar',uid: '-Lz8YxHy0S-QkDaE1PkX'}},
  attendanceData = {'-Lz8YxHiwp8QZW3TqAFn': true,'-Lz8YxHqQXWoaGOFRLrO': true,'-Lz8YxHsMItaaTVNyQRE': true,'-Lz8YxHwuVBMWl0Go6C5': false,'-Lz8YxHy0S-QkDaE1PkX': true,'-Lz8YxIFA1XGVmaNfNr3': false,'-Lz8YxIJVZnIIj7RgEzg': false},
  filteredMembers = Object.entries(allMembers).reduce(
    (r, [k, v]) => (attendanceData[k] && (r[k] = v), r),
    {}
  );

console.log(filteredMembers);

Other relevant documentations:

  • Comma operator (,)
about 4 years ago · Juan Pablo Isaza Relatório

0

You can use reduce method:

const allMembers = {
    "-Lz8YxHiwp8QZW3TqAFn": {
        "first": "foo",
        "last": "bar",
        "uid": "-Lz8YxHiwp8QZW3TqAFn"
    },
    "-Lz8YxHqQXWoaGOFRLrO": {
        "first": "foo",
        "last": "bar",
        "uid": "-Lz8YxHqQXWoaGOFRLrO"
    },
    "-Lz8YxHsMItaaTVNyQRE": {
        "first": "foo",
        "last": "bar",
        "uid": "-Lz8YxHsMItaaTVNyQRE"
    },
    "-Lz8YxHwuVBMWl0Go6C5": {
        "first": "foo",
        "last": "bar",
        "uid": "-Lz8YxHwuVBMWl0Go6C5"
    },
    "-Lz8YxHy0S-QkDaE1PkX": {
        "first": "foo",
        "last": "bar",
        "uid": "-Lz8YxHy0S-QkDaE1PkX"
    },
}

const attendanceData = {
    "-Lz8YxHiwp8QZW3TqAFn": true,
    "-Lz8YxHqQXWoaGOFRLrO": true,
    "-Lz8YxHsMItaaTVNyQRE": true,
    "-Lz8YxHwuVBMWl0Go6C5": false,
    "-Lz8YxHy0S-QkDaE1PkX": true,
    "-Lz8YxIFA1XGVmaNfNr3": false,
    "-Lz8YxIJVZnIIj7RgEzg": false,
}

const reduced = Object.entries(allMembers).reduce((data, [key, value]) => {
  if (attendanceData[key] ?? false)
    data[key] = value;
  return data;  
}, {});

console.log(reduced);

about 4 years ago · Juan Pablo Isaza Relatório

0

You can combine Object.keys(), Array.prototype.filter() and Array.prototype.reduce()

Code:

const allMembers = {'-Lz8YxHiwp8QZW3TqAFn': {first: 'foo',last: 'bar',uid: '-Lz8YxHiwp8QZW3TqAFn',},'-Lz8YxHqQXWoaGOFRLrO': {first: 'foo',last: 'bar',uid: '-Lz8YxHqQXWoaGOFRLrO',},'-Lz8YxHsMItaaTVNyQRE': {first: 'foo',last: 'bar',uid: '-Lz8YxHsMItaaTVNyQRE',},'-Lz8YxHwuVBMWl0Go6C5': {first: 'foo',last: 'bar',uid: '-Lz8YxHwuVBMWl0Go6C5',},'-Lz8YxHy0S-QkDaE1PkX': {first: 'foo',last: 'bar',uid: '-Lz8YxHy0S-QkDaE1PkX',},}

const attendanceData = {'-Lz8YxHiwp8QZW3TqAFn': true,'-Lz8YxHqQXWoaGOFRLrO': true,'-Lz8YxHsMItaaTVNyQRE': true,'-Lz8YxHwuVBMWl0Go6C5': false,'-Lz8YxHy0S-QkDaE1PkX': true,'-Lz8YxIFA1XGVmaNfNr3': false,'-Lz8YxIJVZnIIj7RgEzg': false,}
  
const result = Object
  .keys(allMembers)
  .filter((k) => attendanceData[k])
  .reduce((a, k) => (a[k] = allMembers[k], a), {})

console.log(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