Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

194
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda