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

115
Vistas
retorno de una matriz de objetos con múltiples condiciones aplicadas usando el mapa

Tengo una matriz como:

 const productInfo = [ { product: "NON_PROD", subProducts: [ { subProd: "SUBPROD1", }, ], }, { product: "PROD0", subProducts: [ { subProd: "SUBPROD2", }, { subProd: "SUBPROD3", }, ], }, { product: "PROD1", subProducts: [ { subProd: "SUBPROD4", }, ], }, { product: "PROD2", subProducts: [ { subProd: "SUBPROD5", }, { subProd: "SUBPROD6", }, ], }, ];

Quiero obtener todos los valores de subProd en una matriz, excepto el producto NON_PROD y también si el producto es PROD0, debería devolver el producto, es decir, PROD0 y para otros, debería devolver todos los valores de subProd como:

 subProdList = [PROD0,SUBPROD4,SUBPROD5,SUBPROD6]

He probado este fragmento de código:

 const list = productInfo.map((prod) => { if (prod.product === "PROD0") { return prod.product; } else { prod.subProducts.map((subProduct) => { return subProduct.subProd; }); } });

pero no funciona

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

0

Repita los productos con un bucle y use el map cuando concatene las matrices internas con su matriz de salida.

 const productInfo=[{product:"NON_PROD",subProducts:[{subProd:"SUBPROD1"}]},{product:"PROD0",subProducts:[{subProd:"SUBPROD2"},{subProd:"SUBPROD3"}]},{product:"PROD1",subProducts:[{subProd:"SUBPROD4"}]},{product:"PROD2",subProducts:[{subProd:"SUBPROD5"},{subProd:"SUBPROD6"}]}]; let out = []; for (const obj of productInfo) { const { product, subProducts } = obj; if (product !== 'NON_PROD') { if (product === 'PROD0') { out.push('PROD0'); } else { out = [...out, ...subProducts.map(p => p.subProd)]; } } } console.log(out);

about 4 years ago · Juan Pablo Isaza Denunciar

0

 const productInfo = [ { product: "NON_PROD", subProducts: [ { subProd: "SUBPROD1", }, ], }, { product: "PROD0", subProducts: [ { subProd: "SUBPROD2", }, { subProd: "SUBPROD3", }, ], }, { product: "PROD1", subProducts: [ { subProd: "SUBPROD4", }, ], }, { product: "PROD2", subProducts: [ { subProd: "SUBPROD5", }, { subProd: "SUBPROD6", }, ], }, ]; const list = productInfo.filter(x=> x.product != "NON_PROD").flatMap((prod) => { let op = prod.subProducts.map((subProduct) => { return subProduct.subProd; }); if (prod.product === "PROD0") { op.push(prod.product); } return op; }); console.log(list);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Empuje sus valores necesarios a una nueva variable dentro del mapa podría resolver esto

 const productInfo = [ { product: "NON_PROD", subProducts: [ { subProd: "SUBPROD1", }, ], }, { product: "PROD0", subProducts: [ { subProd: "SUBPROD2", }, { subProd: "SUBPROD3", }, ], }, { product: "PROD1", subProducts: [ { subProd: "SUBPROD4", }, ], }, { product: "PROD2", subProducts: [ { subProd: "SUBPROD5", }, { subProd: "SUBPROD6", }, ], }, ]; let list = [] productInfo.forEach((prod) => { if(prod.product !== 'NON_PROD') { if (prod.product === "PROD0") { list.push(prod.product) } else { list = [...list, ...prod.subProducts.map((subProduct) => subProduct.subProd)]; } } }); console.log(list)

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