function solution(arrs){ let cats = new Map(); let ret = []; let indx = 0; arrs.forEach(arr=>{ arr.category.forEach(cat=>{ if(cats.get(cat)>=0){ let ind = cats.get(cat); ret[ind].children.push({name:arr.name}) } else{ let q = {name:cat, children:[]} q.children.push({name: arr.name}); cats.set(cat,indx++); ret.push(q); } }) }) return ret; }