Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

112
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda