Files
bigcapital/packages/server-nest/src/utils/flat-to-nested-array.ts
2024-12-19 12:48:24 +02:00

25 lines
502 B
TypeScript

export const flatToNestedArray = (
data,
config = { id: 'id', parentId: 'parent_id' },
) => {
const map = {};
const nestedArray = [];
data.forEach((item) => {
map[item[config.id]] = item;
map[item[config.id]].children = [];
});
data.forEach((item) => {
const parentItemId = item[config.parentId];
if (!item[config.parentId]) {
nestedArray.push(item);
}
if (parentItemId) {
map[parentItemId].children.push(item);
}
});
return nestedArray;
};