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

216
Views
¿Cómo iterar a través de objetos anidados y combinar clave y valor?
const products = { value: { phone: [], lamp: [], car: ["bmw", "toyota", "audi"] } };

En el objeto dado, quiero iterar y obtener keys .
Tenga en cuenta que los values son array of strings .

Me gustaría obtener todas las claves y si los valores no son matrices vacías, quiero combinarlas con claves y devolver una matriz con esta estructura

 [ phone, lamp, car-bmw, car-toyota, car-audi ]

Esto es lo que hice hasta ahora, que no es lo que quiero

 const products = { value: { phone: [], lamp: [], car: ["bmw", "toyota", "audi"] } }; const mappedProducts = Object.entries(products.value).map(([value, items]) => { //console.log("value :", value, "items :", items) if (items.length > 0) { return { car: items.map((c) => c) }; } }); console.log(mappedProducts);

Cualquier ayuda será apreciada.

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

0

Modifiqué un poco lo que hiciste, puedes flatMap

 const products = { value: { phone: [], lamp: [], car: ["bmw", "toyota", "audi"] } }; const mappedProducts = Object.entries(products.value).flatMap(([value, items]) => { //console.log("value :", value, "items :", items) if (items.length > 0) { return items.map(item => `${value}-${item}`); } else { return [value]; } }); console.log(mappedProducts);

about 4 years ago · Juan Pablo Isaza Report

0

Puedes usar for in bucle

 const products = { value: { phone: [], lamp: [], car: ["bmw", "toyota", "audi"] } }; const newData = []; for (const key in products) { const value = products[key]; for (const innerKey in value) { const innerVal = value[innerKey]; if (innerVal.length > 0) { innerVal.forEach((item) => newData.push(`${innerKey}-${item}`)); } else { newData.push(innerKey); } } } console.log(newData);

about 4 years ago · Juan Pablo Isaza Report

0

Otra solución sería usar Object.keys() junto con map y concat para obtener una matriz fusionada con claves y valores (si corresponde):

 const products = { value: { phone: [], lamp: [], car: ["bmw", "toyota", "audi"] } }; let keys = [].concat.apply([], Object.keys(products.value).map((key) =>{ if(products.value[key].length > 0){ return products.value[key]; } else return key; })); console.log(keys);
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!