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

191
Views
Necesito combinar todos los objetos de un elemento de matriz en una nueva matriz de objetos

Tengo una matriz anidada que tiene una propiedad llamada "opciones". La propiedad de opciones es una matriz de objetos, y ahora cada objeto tiene sus propios campos de propiedad, que también es una matriz de objetos.

Entonces, de cada opción en la matriz de opciones, necesito obtener los campos de opción y colocarlos todos en una nueva matriz.

Publicaré una imagen de cómo se ve mi matriz, ya que podría ser más fácil entender cómo se ve. Aquí está la imagen de la matriz.

Ahora he intentado mapearlos todos y luego obtener los campos, pero a mi manera devuelve la matriz pero con cada objeto de campos, pero quiero que se devuelva ya que cada campo dentro de los campos debe ser una nueva propiedad de matriz.

 const obj = { key: 'clothes', label: 'Clothes', options: [ { key: 'base-layers', label: 'base-layers', fields: [{ key: 'brand', label: 'brand' }, { key: 'size', label: 'Size' }], }, { key: 'front-layers', label: 'front-layers', fields: [{ key: 'gender', label: 'Gender' }, { key: 'condition', label: 'Condition' }], }, ], }; const getFields = obj.options.map(a => a.map(f => f.fields)); const final = getFields.reduce((r, c) => Object.assign(r, c), {}));

Entonces, cada campo dentro del objeto de campos debe ser su propia propiedad en una nueva matriz de objetos.

¡Realmente agradecería la ayuda!

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede usar una sola función de reducción para iterar sobre cada opción y combinar la colección de campos.

 const obj = { key: 'clothes', label: 'Clothes', options: [ { key: 'base-layers', label: 'base-layers', fields: [{ key: 'brand', label: 'brand' }, { key: 'size', label: 'Size' }, { key: 'condition', label: 'Condition' }], }, { key: 'front-layers', label: 'front-layers', fields: [{ key: 'gender', label: 'Gender' }, { key: 'condition', label: 'Condition' }], }, ], }; const allFields = obj.options.reduce((fields, option) => [...fields, ...option.fields], []); console.log(allFields); // Combine all fields without duplications (not optimized) const allFieldsUnique = obj.options.reduce((fields, option) => { return [...fields, ...option.fields.filter(a => !fields.some(b => b.key === a.key))]; }, []); console.log(allFieldsUnique);

about 4 years ago · Juan Pablo Isaza Report

0

Use Array.flatMap() para obtener una matriz extrayendo los campos de cada opción.

Si desea un objeto, asigne los campos a una matriz de pares [key, value] y conviértalos en un objeto con Object.fromEntries() :

 const obj = {"key":"clothes","label":"Clothes","options":[{"key":"base-layers","label":"base-layers","fields":[{"key":"brand","label":"Brand"},{"key":"size","label":"Size"}]},{"key":"front-layers","label":"front-layers","fields":[{"key":"gender","label":"Gender"},{"key":"condition","label":"Condition"}]}]}; const arr = obj.options.flatMap(option => option.fields) console.log(arr); const object = Object.fromEntries(obj.options.flatMap(option => option.fields.map(({ key, label }) => [key, label]) )); console.log(object);

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!