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

259
Vistas
Cree una matriz de múltiples objetos con una estructura diferente a partir de una matriz de objetos con claves duplicadas usando Object.assign() en JavaScript

Tengo una matriz inicial de objetos en la siguiente estructura:

 let sampleArray = [ { chairperson: 'Sample person' }, { chairperson: 'Sample person 2' }, { arbitratorClaimant: 'Sample person 3' }, { arbitratorRespondent: 'Sample person 4' }, { secretary: 'Sample person 5' } ]

estoy usando

 Object.assign({}, ...sampleArray)

para combinar la matriz de objetos en un solo objeto, pero dado que el objeto no puede tener claves duplicadas, sobrescribe el primer presidente ('Persona de muestra') con el segundo presidente. En cambio, me gustaría generar una matriz con múltiples objetos donde los objetos con claves duplicadas se colocan en el siguiente objeto de la matriz. Por ejemplo, esto es lo que estoy buscando:

 [ { chairperson: 'Sample person', arbitratorClaimant: 'Sample person 3', arbitratorRespondent: 'Sample person 4', secretary: 'Sample person 5' }, { chairperson: 'Sample person 2' } ]

es posible?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Esta es, todavía no, una respuesta, sino un intento de discutir el resultado deseado.

¿Qué tal crear un resultado como el siguiente:

 { chairperson: ['Sample person','Sample person 2'], arbitratorClaimant: 'Sample person 3', arbitratorRespondent: 'Sample person 4', secretary: 'Sample person 5' }

Mirando tu comentario, tal vez lo siguiente podría funcionar para ti:

 { chairperson: 'Sample person, Sample person 2', arbitratorClaimant: 'Sample person 3', arbitratorRespondent: 'Sample person 4', secretary: 'Sample person 5' }

En lugar de " , " se puede elegir cualquier otro separador para listas de varios nombres

about 4 years ago · Juan Pablo Isaza Denunciar

0

En este ejemplo, la collated es similar a la primera estructura de datos alternativa de @CarstenMassmann. Es muy posible que esta sea una forma demasiado complicada de hacerlo, pero la segunda parte del código esencialmente gira (creo que ese es el término correcto) los datos recopilados para que puedan usarse para las filas de la tabla.

 let sampleArray = [ { chairperson: 'Sample person' }, { chairperson: 'Sample person 2' }, { arbitratorClaimant: 'Sample person 3' }, { arbitratorRespondent: 'Sample person 4' }, { secretary: 'Sample person 5' } ]; const merge_objects = (obj1, obj2) => Object.entries(obj2).reduce( (acc, [key, val]) => Object.assign(acc, { [key]: (acc[key] ?? []).concat(val) }), obj1 ); const collated = sampleArray.reduce( (acc, val) => merge_objects(acc, val), {} ); const max_item_count = (input) => Math.max( ...Object.values(input).map((arr) => arr.length) ); const get_table_rows = (input) => Array .from({ length: max_item_count(input) }) .map( (row, index) => Object.fromEntries( Object.entries(collated) .map(([key, val]) => [key, collated[key][index] ?? null]) .filter(([key, val]) => val) ) ); console.log( JSON.stringify(get_table_rows(collated)) );

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