Реализация алгоритма на JavaScript:
function treeToPlainList(tree, idPrefix = '') {
let list = [];
// Проходит по каждому элементу массива
tree.forEach((item, index) => {
// Добавляет к элементу свойство id
const itemForPlainList = {...item, id: idPrefix + (index + 1)};
// Удаляет из элемента свойство children
delete itemForPlainList.children;
// Добавляет элемент в итоговый массив
list.push(itemForPlainList);
if (item.children) {
// Добавляет в конец итогового массива элементы, которые возвращает функция treeToPlainList
list = [...list, ...treeToPlainList(item.children, idPrefix + (index + 1) + '.')];
}
});
return list;
}
const list = treeToPlainList(tree); // tree — изначальный массив, list — результат