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

107
Views
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 answers
Answer question

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 Report

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 Report

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 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!