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.