对 json 层次结构进行排序

Posted

技术标签:

【中文标题】对 json 层次结构进行排序【英文标题】:Sort json hierarchy 【发布时间】:2022-01-08 08:52:39 【问题描述】:

我有以下结构的 JSON:


   "name":"Scorpiones",
   "children":[
      
         "name":"Parabuthus",
         "children":[
            
               "name":"Parabuthus schlechteri"
            ,
            
               "name":"Parabuthus granulatus"
            
         ]
      ,
      
         "name":"Buthidae",
         "children":[
            
               "name":"Androctonus",
               "children":[
                  
                     "name":"Androctonus crassicauda"
                  ,
                  
                     "name":"Androctonus bicolor"
                  
               ]
            
         ]
      
   ]

需要在层次结构的每一级按名称字段对元素进行排序。在 JS 的帮助下如何做到这一点?

【问题讨论】:

【参考方案1】:

您可以使用Object.keys,它返回一个包含所有对象键的数组,然后您可以简单地对该数组进行排序。

const getSortedKeys = (obj) => 
  return Object.keys(obj).sort();

要扔掉你所有的对象嵌套键,你可以使用递归:

const trav = (obj) => 
    if(obj instanceof Array) 
        // go inside each object in the array
        obj.forEach(item => trav(item))
     else if(typeof obj === "object") 
        // sort object keys
        let keys = getSortedKeys(obj);
        // do whatevery you want...
        
        // go the the next levels
        keys.forEach(key => trav(obj[key]))
    

【讨论】:

以上是关于对 json 层次结构进行排序的主要内容,如果未能解决你的问题,请参考以下文章