Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有角度嵌套子对象的对象排序数组(7)_Javascript_Arrays_Angular_Sorting - Fatal编程技术网

Javascript 具有角度嵌套子对象的对象排序数组(7)

Javascript 具有角度嵌套子对象的对象排序数组(7),javascript,arrays,angular,sorting,Javascript,Arrays,Angular,Sorting,我试图根据包含内部子级的对象字段“sortOrderNumber”对响应负载进行排序 响应有效载荷: { "content": [ { "eserviceSettings":[ { "serviceName":"Licenses", "sortOrderNumber":5, "eserviceSettings":[

我试图根据包含内部子级的对象字段“sortOrderNumber”对响应负载进行排序

响应有效载荷:

{   
    "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没有太多关系