I have a standalone google script project. I'm getting a flat JSON answer from fetch via some API.Actually it should be nested but not. My JSON has level number instead nests. For example:
[ { level: 1, first_name: 'Sammy', last_name: 'Snow', cloth_num: 8, cloth: null, color: null, day: null, sales: 1000},
{ level: 2, first_name: null, last_name: null, cloth_num: 3, cloth: 'shirt', color: 'red', day: null, sales: 300},
{ level: 3, first_name: null, last_name: null, cloth_num: 1, cloth: null, color: null, day: 1, sales: 100},
{ level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 2, sales: 200},
{ level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 'jeans', color: 'blue', day: null, sales: 700},
{ level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 1, sales: 300},
{ level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 2, sales: 400},
{ level: 1, first_name: 'Danny', last_name: 'Crow', cloth_num: 15, cloth: null, color: null, day: null, sales: 2000},
{ level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 't-shirt', color: 'red', day: null, sales: 800},
{ level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 1, sales: 500},
{ level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 2, sales: 300},
{ level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 'hat', color: 'blue', day: null, sales: 700},
{ level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 1, sales: 300},
{ level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 2, sales: 400},
{ level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 'socks', color: 'blue', day: null, sales: 500},
{ level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 1, sales: 300},
{ level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 2, sales: 200} ]
I wrote a script to nest second level into first level:
function convertFlat(dataq) {
let map = new Map()
let x = dataq.forEach(x => {if (x.level === 1) x.next_level=[], map.set(x.first_name,x)})
for(let i = 0; i < dataq.length; i++){
if(dataq[i].level === 1) {
l = map.get(dataq[i].first_name);
continue;
}
else l.next_level.push(dataq[i])
}
console.log([...map.values()])
}
How can I nest third level into second? I'm very new in Google Apps Script and have no idea how to repeat this loop for second and third level.