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

166
Views
Filter an array to return the deep level object

I have a deep level array like below,

const cat = [
  {
    name: "cat 1",
    id: 1,
    subCat: [
      {
        name: "sub 1",
        id: 10,
        subSubCat: [
          { summary: "summary1", id: 20 },
          { summary: "summary2", id: 21 },
        ],
      },
    ],
  },
  {
    name: "cat 2",
    id: 2,
    subCat: [
      {
        name: "sub 2",
        id: 20,
        subSubCat: [
          { summary: "summary1", id: 30 },
          { summary: "summary2", id: 31 },
        ],
      },
    ],
  },
];

I have to filter with subSubCat id(31) and it should return a summary value(summary2).

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

0

You can use Array.map and Array.flat to get the subSubCat list, then use Array.find to find the subSubCat item by id.

const cat = [
  {
    name: "cat 1",
    id: 1,
    subCat: [
      {
        name: "sub 1",
        id: 10,
        subSubCat: [
          { summary: "summary1", id: 20 },
          { summary: "summary2", id: 21 },
        ],
      },
    ],
  },
  {
    name: "cat 2",
    id: 2,
    subCat: [
      {
        name: "sub 2",
        id: 20,
        subSubCat: [
          { summary: "summary1", id: 30 },
          { summary: "summary2", id: 31 },
        ],
      },
    ],
  },
];

var subSubCats = cat.map(item => item.subCat.map(subCatItem => subCatItem.subSubCat)).flat(2);
var result = subSubCats.find(e => e.id == 31);
console.log(result.summary);

about 4 years ago · Juan Pablo Isaza Report

0

This looks like something that requires a two level loop and find().

const cat = [
  {
    name: "cat 1",
    id: 1,
    subCat: [
      {
        name: "sub 1",
        id: 10,
        subSubCat: [
          { summary: "summary1", id: 20 },
          { summary: "summary2", id: 21 },
        ],
      },
    ],
  },
  {
    name: "cat 2",
    id: 2,
    subCat: [
      {
        name: "sub 2",
        id: 20,
        subSubCat: [
          { summary: "summary1", id: 30 },
          { summary: "summary2", id: 31 },
        ],
      },
    ],
  },
];


for(let i =0 ; i < cat.length;i++){
  if(Array.isArray(cat[i].subCat)){
  let subCatArray = cat[i].subCat;
  //console.log(subCatArray);
for(let j =0 ; j < subCatArray.length;j++){
  let subSubArray = subCatArray[j].subSubCat;
  if(Array.isArray(subSubArray)){
  //console.log(subSubArray);
  let foundObject = subSubArray.find((x) => 
   x.id === 31
  );
  //console.log(foundObject);
  if(foundObject!==undefined) 
   {
    console.log(foundObject.summary);
    break;
   }
   }
  }
}
}

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!