我知道:
使用lodash可以让扁平的数据结构和嵌套数据结构相互转化:
import _ from 'lodash';
interface FlatItem {
id: number;
parentId: number | null;
name: string;
}
const flatData: FlatItem[] = [
{ id: 1, parentId: null, name: 'Item 1' },
{ id: 2, parentId: 1, name: 'Item 2' },
{ id: 3, parentId: 1, name: 'Item 3' },
{ id: 4, parentId: 2, name: 'Item 4' },
];
const nestedData = _.values(_.mapValues(_.groupBy(flatData, 'parentId'), (items) =>
_.map(items, (item) => ({
...item,
children: _.isEmpty(item.parentId)? undefined : nestedData.find((nested) => nested.id === item.parentId)?.children || [],
}))
));
console.log(nestedData);
但是我觉得这样编写代码还是比较复杂,请问是否有三方库专门针对嵌套数据结构和扁平数据结构的转换?