简体   繁体   中英

Typescript get all values of a property from a nested object

I have a nested object:

{
  id: 240,
  name: 'FY1 2022',
  children: [
    {
      id: 241,
      name: 'Q1 2022',
      children: [
        {
          id: 242,
          name: 'Jan 2022',
        },
        {
          id: 243,
          name: 'Feb 2022',
        },
        {
          id: 244,
          name: 'Mar 2022',
        },
      ],
    },
  ],
};

and I need to get all the id values into an array from that objects that does not have the property children .

Is there a way to do this?

Thanks in advance!

You can try this:

type MyObject = {
   id: number, 
   name: string,
   children?: MyObject[]
}
function getIds(obj: MyObject): number[] {

   if (!obj.children) {
      return [obj.id];
   } 

   return obj.children.reduce((ids:number[],o: MyObject)=> {
     ids.push(...getIds(o))
     return ids
   },[]);
}

try this (using recursion)

 const test = { id: 240, name: 'FY1 2022', children: [ { id: 241, name: 'Q1 2022', children: [ { id: 242, name: 'Jan 2022', }, { id: 243, name: 'Feb 2022', }, { id: 244, name: 'Mar 2022', }, ], }, ], }; function addToArray(array, obj) { if (obj.children) { obj.children.forEach(child => addToArray(array, child)) } else { array.push(obj.id) } return array } const array = [] console.log(addToArray(array, test))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM