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

109
Vistas
return from array of objects with multiple conditons applied using map

I have an array as:

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",
      },
    ],
  },
];

I want to get all the subProd values in an array except for NON_PROD product and also if the product is PROD0 it should return the product i.e PROD0 and for others it should return all the subProd values like:

subProdList = [PROD0,SUBPROD4,SUBPROD5,SUBPROD6]

I have tried this piece of code:

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

but its not working

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

0

Iterate over the products with a loop, and use map when you concatenate the inner arrays with your output array.

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

Push your necessary values to a new variable inside map could solve this

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