Javascript 具有角度嵌套子对象的对象排序数组(7)
我试图根据包含内部子级的对象字段“sortOrderNumber”对响应负载进行排序 响应有效载荷:Javascript 具有角度嵌套子对象的对象排序数组(7),javascript,arrays,angular,sorting,Javascript,Arrays,Angular,Sorting,我试图根据包含内部子级的对象字段“sortOrderNumber”对响应负载进行排序 响应有效载荷: { "content": [ { "eserviceSettings":[ { "serviceName":"Licenses", "sortOrderNumber":5, "eserviceSettings":[
{
"content":
[
{
"eserviceSettings":[
{
"serviceName":"Licenses",
"sortOrderNumber":5,
"eserviceSettings":[
{
"serviceName":"Manning Licenses",
"sortOrderNumber":2,
"eserviceSettings":[
{
"serviceName":"Enquiry on Application Status",
"sortOrderNumber":2,
"eserviceSettings":[
]
},
{
"serviceName":"Enquiry of Manning Licence and Submission",
"sortOrderNumber":1,
"eserviceSettings":[
]
}
]
},
{
"serviceName":"Craft Licenses",
"sortOrderNumber":1,
"eserviceSettings":[
{
"serviceName":"Application for New Harbour Craft Licence",
"sortOrderNumber":2,
"eserviceSettings":[
]
},
{
"serviceName":"Application for New Pleasure Craft Licence",
"sortOrderNumber":1,
"eserviceSettings":[
]
}
]
},
{
"serviceName":"Craft Inspection Booking",
"sortOrderNumber":5,
"eserviceSettings":[
]
}
]
}
]
}
]
}
我尝试了下面的代码
const childEservices = content[0].eserviceSettings;
this.postLoginDashboardData = allObjs.concat(childEservices);
this.postLoginDashboardData.sort((a: any, b: any) => a.sortOrderNumber - b.sortOrderNumber);
this.postLoginDashboardData.forEach( (element) => {
element.eserviceSettings.sort((a: any, b: any) => a.sortOrderNumber - b.sortOrderNumber);
});
排序后的结果位于内部子项未排序的位置下方。不确定我缺少的位置
{
"content":
[
{
"eserviceSettings":[
{
"serviceName":"Licenses",
"sortOrderNumber":5,
"eserviceSettings":[
{
"serviceName":"Craft Licenses",
"sortOrderNumber":1,
"eserviceSettings":[
{
"serviceName":"Application for New Harbour Craft Licence",
"sortOrderNumber":2,
"eserviceSettings":[
]
},
{
"serviceName":"Application for New Pleasure Craft Licence",
"sortOrderNumber":1,
"eserviceSettings":[
]
}
]
},
{
"serviceName":"Manning Licenses",
"sortOrderNumber":2,
"eserviceSettings":[
{
"serviceName":"Enquiry on Application Status",
"sortOrderNumber":2,
"eserviceSettings":[
]
},
{
"serviceName":"Enquiry of Manning Licence and Submission",
"sortOrderNumber":1,
"eserviceSettings":[
]
}
]
}
,
{
"serviceName":"Craft Inspection Booking",
"sortOrderNumber":5,
"eserviceSettings":[
]
}
]
}
]
}
]
}
用最少的代码以更好的方式实现排序的任何帮助。
我想要得到的结果如下
{
"content":
[
{
"eserviceSettings":[
{
"serviceName":"Licenses",
"sortOrderNumber":5,
"eserviceSettings":[
{
"serviceName":"Craft Licenses",
"sortOrderNumber":1,
"eserviceSettings":[
{
"serviceName":"Application for New Pleasure Craft Licence",
**"sortOrderNumber":1,**
"eserviceSettings":[
]
},
{
"serviceName":"Application for New Harbour Craft Licence",
**"sortOrderNumber":2,**
"eserviceSettings":[
]
}
]
},
{
"serviceName":"Manning Licenses",
"sortOrderNumber":2,
"eserviceSettings":[
{
"serviceName":"Enquiry of Manning Licence and Submission",
**"sortOrderNumber":1,**
"eserviceSettings":[
]
},
{
"serviceName":"Enquiry on Application Status",
**"sortOrderNumber":2,**
"eserviceSettings":[
]
}
]
},
,
{
"serviceName":"Craft Inspection Booking",
"sortOrderNumber":5,
"eserviceSettings":[
]
}
]
}
]
}
]
}
提前感谢。第一次排序后,请使用以下命令:
function sortRecursive(data) {
if (data[0]) {
data.forEach( (element) => {
if (element.eserviceSettings) {
element.eserviceSettings.sort((a, b) => a.sortOrderNumber - b.sortOrderNumber);
sortRecursive(element.eserviceSettings);
}
});
}
}
第一次排序后,使用以下各项:
function sortRecursive(data) {
if (data[0]) {
data.forEach( (element) => {
if (element.eserviceSettings) {
element.eserviceSettings.sort((a, b) => a.sortOrderNumber - b.sortOrderNumber);
sortRecursive(element.eserviceSettings);
}
});
}
}
另外,这个问题的理想标签是JavaScript,因为它与Angular没有太多关系。另外,这个问题的理想标签是JavaScript,因为它与Angular没有太多关系