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

196
Visualizações
Combinar dos objetos basados en el valor del objeto uno con la clave del objeto dos

Desea fusionar valores clave de objeto con otro valor de objeto.

Supongamos que la clave del objeto de resultados debe coincidir con la coincidencia del nombre_clave del objeto de los encabezados porque el encabezado debe ser CamelCase. Tengo un objeto de encabezados es:

 let headers = [ { key_name: 'pid', header_value: 'PID' }, { key_name: 'card_no', header_value: 'Card Number' }, { key_name: 'trans_id', header_value: 'Transaction ID' }, { key_name: 'card_name', header_value: 'Card Name' } ]

resultados El objeto es:

 let results = let results = [ { pid: '1234567890', card_no: '546.......3742', trans_id: '2019124453159', card_name: 'Mastercard', code: '$' }, { pid: '1234567890', card_no: '546.......3742', trans_id: '2019120534555', card_name: 'Visa', code: 'INR' } ]

Los valores coincidentes del nombre_clave del objeto de encabezado deben filtrarse en los resultados finales Objeto como se muestra a continuación. resultados esperados es:

 let results = [ { PID: '1234567890', Card Number: '546.......3742', Transaction ID: '2019124453159', Card Name: 'Mastercard' }, { PID: '1234567890', Card Number: '546.......3742', Transaction ID: '2019120534555', Card Name: 'Visa' } ]

Intenté con el siguiente script que solo devuelve todos los valores:

 for (let index = 0; index < results.length; index++) { for (let i = 0; i < headers.length; i++) { console.log(results [index][header[i].key_name]) } }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Sugeriría convertir el primer objeto en un mapa, para que tenga una búsqueda más rápida. Luego convierta sus objetos en pares clave/valor con Object.entries , realice el mapeo y el filtrado, y luego vuelva a convertir esos pares en un objeto con Object.fromEntries

 let headers = [{ key_name: 'pid', header_value: 'PID' },{key_name: 'card_no',header_value: 'Card Number'},{key_name: 'trans_id',header_value: 'Transaction ID'},{key_name: 'card_name',header_value: 'Card Name'}]; // Convert to map: let map = new Map(headers.map(({key_name, header_value}) => [key_name, header_value])); let arr = [{pid: '1234567890',card_no: '546.......3742',trans_id: '2019124453159',card_name: 'Mastercard',code: '$'},{pid: '1234567890', card_no: '546.......3742',trans_id: '2019120534555',card_name: 'Visa',code: 'INR'}]; // Use map to make transition let result = arr.map(obj => Object.fromEntries(Object.entries(obj).map(([key, value]) => map.has(key) && [map.get(key), value] ).filter(Boolean)) ); console.log(result);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede buscar en Object.keys(..) de la matriz de resultados para que pueda asignar los valores de clave antiguos a los nuevos. Podrías usar algo como esto:

 const mappedHeaders = results.map((r) => { const keys = Object.keys(r); let newObj = {}; for (const key of keys) { const newHeader = headers.find((h) => h.key_name === key); if (newHeader) newObj[newHeader.header_value] = r[key]; } return newObj; });

Es posible que deba verificar si existe la asignación y manejar esos casos para evitar errores.

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