function flattenMap(itemList, key) { return itemList.flatMap(item => { if (typeof item[key] === 'undefined' || item[key].length === 0) { return item; } let childs = item[key]; delete item[key]; return [item, ...flattenMap(childs, key)]; }); }