javascript - 如何正确输出子数组?
问题描述
如何正确输出子数组?
const arr = [
[{ id: 0, parrentId: null, title: "Main tab", parrent: true }],
[{ id: 1, parrentId: 0, title: "Main child 1", parrent: false }],
[{ id: 2, parrentId: 0, title: "Main child 2", parrent: false }],
[{ id: 3, parrentId: 2, title: "Main tab 2", parrent: true }],
[{ id: 4, parrentId: 3, title: "Main child tab 2", parrent: false }]
];
如何根据child > parrent输出数组?但是这样 id 是parrentId === id
Main tab:
1) Main child 1
2) Main child 2
1) Main tab 2
1)Main child tab 2
我试着
if (arr) {
const child = arr.filter(({ hasChild }) => hasChild);
const notChild = arr.filter(({ hasChild }) => !hasChild);
const test = { ...child, notChild };
console.log(test);
}
解决方案
如果我理解正确,也许是这样的:
const arr = [
[{ id: 0, parentId: null, title: "Main tab", parent: true }],
[{ id: 1, parentId: 0, title: "Main child 1", parent: false }],
[{ id: 2, parentId: 0, title: "Main child 2", parent: false }],
[{ id: 3, parentId: 2, title: "Main tab 2", parent: true }],
[{ id: 4, parentId: 3, title: "Main child tab 2", parent: false }]
];
arr.reduce((acc, data) => {
if(data[0].parent) {
acc = acc.concat(data[0]);
} else {
acc = acc.map(ac => {
if(ac.id === data[0].parentId) {
return {
...ac,
child: ac.child ? ac.child.concat(data[0]) : [].concat(data[0])
};
} else {
return ac;
}
});
}
return acc;
}, []);
推荐阅读
- c# - 我们如何使用 Windows 身份验证 .NET Core 3.1 保护 Swagger UI
- c# - 我可以从文本文件中制作动态组合框吗?
- scala - 提高使用微批处理的慢速运行火花流处理的性能
- javascript - JS 从 http.get 分配 var
- typescript - Typescript,ReduxJS Toolkit - createSlice 生成的 Reducer 不能分配给“Reducer”类型的参数
' - r - 如何在 Shiny 应用程序的输出中显示“请稍候”
- python - 如何修复错误 Guild Object has no attribute 'guild_permissions'
- php - romove obj 从查询 laravel obj['pivot']
- variables - Watson Assistant 上下文变量计数器 2021
- exe - 如何使可执行文件仅以管理员身份运行(exe 上的 UAC 图标)