const arr=[{id:1,child:[ {id:11,child:[]}, {id:12,child:[ {id:121,child:[]}, ]} ]},{id:2,child:[ {id:21,child:[ {id:31,child:[ {id:41,child:[]}, ]}, ]}, {id:22,child:[]} ]},{id:3,child:[]}] const identity='id'; const children='child'; function getPosById(arr,map=new Map(),pos=[]){ arr.forEach((item,i)=>{ const currPos=[...pos,i]; map.set(item[identity],currPos); if(item.child){ getPosById(item[children],map,currPos); } }) return map; } console.log(getPosById(arr))