實現多級嵌套排序可以通過多次調用排序算法來實現,首先對最外層進行排序,然后對內層進行排序,以此類推。以下是一個示例的多級嵌套排序方案:
假設有一個對象數組 items
,包含多個對象,每個對象有 id
、name
和 children
三個屬性,其中 children
是一個子對象數組。我們希望按照 id
升序排序最外層的對象,然后按照 name
降序排序內層的對象。
// 多級嵌套排序函數
function nestedSort(items) {
items.sort((a, b) => a.id - b.id); // 外層對象按照 id 升序排序
items.forEach(item => {
if (item.children) {
item.children.sort((a, b) => b.name.localeCompare(a.name)); // 內層對象按照 name 降序排序
nestedSort(item.children); // 遞歸進行多級嵌套排序
}
});
}
// 示例數據
let items = [
{ id: 3, name: 'C', children: [{ id: 2, name: 'B' }, { id: 1, name: 'A' }] },
{ id: 1, name: 'A', children: [{ id: 3, name: 'C' }, { id: 2, name: 'B' }] },
{ id: 2, name: 'B', children: [{ id: 1, name: 'A' }, { id: 3, name: 'C' }] }
];
nestedSort(items);
console.log(items);
以上代碼實現了多級嵌套排序,首先對外層對象按照 id
進行升序排序,然后對內層對象按照 name
進行降序排序。通過遞歸調用 nestedSort
函數,可以實現多級嵌套的排序。