我有一系列的类:
const transferClasses = [
{
id: "c5d91430-aaab-ed11-8daf-85953743f5cc",
name: "Class1",
isTransfer: false,
children: [],
},
{
id: "775cb75d-aaab-ed11-8daf-85953743f5cc",
name: "Class2",
isTransfer: false,
children: [
{
id: "89134f56-3ef6-ed11-8daf-85953743f5cc",
name: "Class2-1",
isTransfer: false,
children: [],
},
{
id: "89134f56-3ef6-ed11-8daf-85953743f4cc",
name: "Class2-2",
isTransfer: false,
children: [
{
id: "89134f56-3ef6-ed11-8daf-85953743f4de",
name: "Class2-2-1",
isTransfer: false,
children: [],
},
{
id: "89134f56-3ef6-ed11-8daf-85953743f1ce",
name: "Class2-2-2",
isTransfer: false,
children: [],
},
],
},
],
},
];
我需要迭代数组并将其转换为平面列表.例如:
const flatList = [
{
id: "c5d91430-aaab-ed11-8daf-85953743f5cc",
name: "Class1",
isTransfer: false,
childrenId: null,
parentId: null,
},
{
id: "775cb75d-aaab-ed11-8daf-85953743f5cc",
name: "Class2",
isTransfer: false,
childrenId: [
"89134f56-3ef6-ed11-8daf-85953743f5cc",
"89134f56-3ef6-ed11-8daf-85953743f4cc",
],
parentId: null,
},
{
id: "89134f56-3ef6-ed11-8daf-85953743f5cc",
name: "Class2-1",
isTransfer: false,
childrenId: [],
parentId: ["775cb75d-aaab-ed11-8daf-85953743f5cc"],
},
{
id: "89134f56-3ef6-ed11-8daf-85953743f5cc",
name: "Class2-2",
isTransfer: false,
childrenId: [
"89134f56-3ef6-ed11-8daf-85953743f4de",
"89134f56-3ef6-ed11-8daf-85953743f1ce",
],
parentId: ["775cb75d-aaab-ed11-8daf-85953743f5cc"],
},
{
id: "89134f56-3ef6-ed11-8daf-85953743f4de",
name: "Class2-2-1",
isTransfer: false,
childrenId: [],
parentId: ["89134f56-3ef6-ed11-8daf-85953743f5cc"],
},
{
id: "89134f56-3ef6-ed11-8daf-85953743f1ce",
name: "Class2-2-2",
isTransfer: false,
childrenId: [],
parentId: ["89134f56-3ef6-ed11-8daf-85953743f5cc"],
},
];
需要 for each 元素提供其父元素和子元素的id列表.
这是我的函数代码.似乎我想好了怎么处理子元素,但完全没有办法添加父母.
export const getFlatList = (classes) => {
return classes.map((cl) => {
const getChildIds = (classes) => {
return classes.map((cl) => {
if (cl.children.length > 0) {
getChildIds(cl.children);
} else {
return cl.id;
}
return cl.id;
});
};
return {
id: cl.id,
name: cl.name,
isTransfer: cl.isTransfer,
children: getChildIds(cl.children),
parentId: ?? // :(
};
});
};