Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

260
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!