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

138
Visualizações
Obtenga valores de matrices dentro de objetos anidados, compare y devuelva el objeto

Estoy tratando de recorrer un objeto anidado que se ve así:

 let obj = { cols: [ { name: 'name', type: 'String' }, { name: 'dob', type: 'Number' }, { name: 'address', type: 'String' }, { name: 'income', type: 'String' }, { name: 'vehicleNumber', type: 'Number' }, { name: 'assets', type: 'Number' } ], row: [ { name: 'randomInfo', columns: ['name', 'address', 'assets'], } ] }

Estoy usando la lógica a continuación para recorrer las matrices del objeto, comparar si son iguales y, si lo son, las devolveré en una matriz. Sin embargo, estoy tratando de devolver todo el objeto dentro de la tecla cols. Por ejemplo, si hay elementos coincidentes dentro del valor del nombre de la matriz cols con el valor de la clave de las columnas de la matriz de filas, (cols.name === fila.columnas[elemento], si hay una coincidencia, devuelve el objeto cols)

 //loop through the obj and get the keys before this let cols = cols.map(col => col.name); let row = row.map(ind => ind.columns); let rowNamesFlattened = [].concat.apply([], row); let matchingCols = cols.filter(element => row.includes(element));

El objeto matchingCols ahora tiene los nombres coincidentes, pero en última instancia también quiero devolver su tipo. ¿Alguna idea de cómo se puede hacer esto?

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

0

puede usar el filter directamente en la matriz cols . Sin embargo, aquí asumí que la matriz de row solo tiene 1 elemento

 let obj = { cols: [ { name: 'name', type: 'String' }, { name: 'dob', type: 'Number' }, { name: 'address', type: 'String' }, { name: 'income', type: 'String' }, { name: 'vehicleNumber', type: 'Number' }, { name: 'assets', type: 'Number' } ], row: [ { name: 'randomInfo', columns: ['name', 'address', 'assets'], } ] } let matchingCols = obj.cols.filter(({name}) => obj.row[0].columns.includes(name)) console.log(matchingCols)

En caso de que haya varios elementos presentes dentro de la matriz de row . puede usar flatMap para obtener una lista plana de columnas y luego el mismo procedimiento que el anterior

 let obj = { cols: [ { name: 'name', type: 'String' }, { name: 'dob', type: 'Number' }, { name: 'address', type: 'String' }, { name: 'income', type: 'String' }, { name: 'vehicleNumber', type: 'Number' }, { name: 'assets', type: 'Number' } ], row: [ { name: 'randomInfo', columns: ['name', 'address', 'assets'], }, { name: 'randomInfo2', columns: ['dob','name'], } ] } let filtered = obj.cols.filter(({name}) => obj.row.flatMap(ind => ind.columns).includes(name)) console.log(filtered)

Otra solución para obtener emparejados y no emparejados de una sola vez usando reduce . por lo que no necesita 2 llamadas de filtro. hizo referencia a esto

 let obj = { cols: [ { name: 'name', type: 'String' }, { name: 'dob', type: 'Number' }, { name: 'address', type: 'String' }, { name: 'income', type: 'String' }, { name: 'vehicleNumber', type: 'Number' }, { name: 'assets', type: 'Number' } ], row: [ { name: 'randomInfo', columns: ['name', 'address', 'assets'], }, { name: 'randomInfo2', columns: ['dob','name'], } ] } let flatted = obj.row.flatMap(ind => ind.columns); const result = obj.cols.reduce((acc, curr) => { acc[flatted.includes(curr.name) ? 'match' : 'unmatch'].push(curr); return acc; }, { match: [], unmatch: [] }); 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