假设有如下数据结构:
[
{
"id": 1,
"name": "Parent A",
"children": [
{
"id": 2,
"name": "Child B"
},
{
"id": 3,
"name": "Child A"
}
]
},
{
"id": 4,
"name": "Parent C",
"children": [
{
"id": 5,
"name": "Child A"
},
{
"id": 6,
"name": "Child C"
}
]
}
]
可以使用以下代码实现按照父级名称及其子级名称排序查询:
const data = [
{
"id": 1,
"name": "Parent A",
"children": [
{
"id": 2,
"name": "Child B"
},
{
"id": 3,
"name": "Child A"
}
]
},
{
"id": 4,
"name": "Parent C",
"children": [
{
"id": 5,
"name": "Child A"
},
{
"id": 6,
"name": "Child C"
}
]
}
];
// 将数据展开为 [{ id, name, parent }, { id, name, parent }] 的形式
const flattenData = data.flatMap(parent => [
{ id: parent.id, name: parent.name, parent: null },
...parent.children.map(child => ({ id: child.id, name: child.name, parent: parent.id }))
]);
// 按照父级名称及其子级名称排序查询
const sortedData = flattenData.sort((a, b) => {
const parentA = flattenData.find(item => item.id === a.parent);
const parentB = flattenData.find(item => item.id === b.parent);
if (parentA === parentB) {
return a.name.localeCompare(b.name);
}
return parentA.name.localeCompare(parentB.name);
});
console.log(sorted