可以使用递归和数组排序来对嵌套对象数组进行排序。以下是一个示例代码,其中假设数组中的每个对象都有一个 “parent_level” 和 “nested_level” 属性,表示每个对象的父级和嵌套级别。
//定义一个排序函数
function sortArrayByParentAndNestedLevel(arr) {
arr.sort(function(a, b) {
if (a.parent_level === b.parent_level) {
return a.nested_level - b.nested_level;
} else {
return a.parent_level - b.parent_level;
}
});
arr.forEach(function(obj){
if(Array.isArray(obj.children)){
obj.children = sortArrayByParentAndNestedLevel(obj.children);
}
});
return arr;
}
//使用示例
var arr = [
{id:'1', parent_level:1, nested_level:0, children:[
{id:'1.1', parent_level:1, nested_level:1},
{id:'1.2', parent_level:1, nested_level:2},
{id:'1.3', parent_level:1, nested_level:1}
]},
{id:'2', parent_level:2, nested_level:0, children:[
{id:'2.1', parent_level:2, nested_level:1},
{id:'2.2', parent_level:2, nested_level:2},
{id:'2.3', parent_level:2, nested_level:1}
]},
{id:'3', parent_level:3, nested_level:0, children:[
{id:'3.1', parent_level:3, nested_level:1},
{id:'3.2', parent_level:3, nested_level:2},
{id:'3.3', parent_level:3, nested_level:1}
]}
];
var sortedArr = sortArrayByParentAndNestedLevel(arr);
console.log(sortedArr);
该函数中,首先对整个数组进行排序,排序规则是先按照父级进行排序,如果父级相同,则
上一篇:按照父节点选择拓扑的Solr查询
下一篇:按照父级和子级排序的SQL