javascript - 按特定的给定顺序对 JSON 数组进行排序

标签 javascript arrays json sorting

<分区>

我有一个来自远程 api 的 json 响应。在那个 JSON 中,我有一个 l2_list,它描述了各个 child 的排序顺序。

我想根据“l2_list”顺序对 child 进行排序。

我有一个如下所示的 json 数组:

var TreeObj = `{
    "RULE_JSON":
        {

            "2674":{
                "pid":"0",
                "level":"1",
                "mid":"2674",
                "name":"test1",
                "l2_list": [3083],
                "children":
                    {
                        "3083":{"pid":"2674","level":"2","mid":"3083","name":"MAINTENANCE","children":[]}
                    }
            },
            "2619":{
                "pid":"0",
                "level":"1",
                "mid":"2619",
                "name":"EFFICIENCY",
                "l2_list": [2605,2608,2607,2626,2627,3057,3058],
                "children":
                    {
                        "2605":{"pid":"2619","level":"2","mid":"2605","name":"IDLING","children":[]},
                        "2607":{"pid":"2619","level":"2","mid":"2607","name":"COMPLIANT","children":[]},
                        "2626":{"pid":"2619","level":"2","mid":"2626","name":"DISPATCHED","children":[]},
                        "2627":{"pid":"2619","level":"2","mid":"2627","name":"HOURS","children":[]},
                        "2608":{"pid":"2619","level":"2","mid":"2608","name":"COMPLIANT DEPART","children":[]},
                        "3058":{"pid":"2619","level":"2","mid":"3058","name":"CENTER VISITS","children":[]},
                        "3057":{"pid":"2619","level":"2","mid":"3057","name":"OFFICE VISITS","children":[]}
                    }
            }
        }
}`;

排序后,我的结果集应该显示 2619 个 child ,如下所示:

"l2_list": [2605,2608,2607,2626,2627,3057,3058],
    "children":
        {
            "2605":{"pid":"2619","level":"2","mid":"2605","name":"IDLING","children":[]},
            "2608":{"pid":"2619","level":"2","mid":"2608","name":"COMPLIANT DEPART","children":[]},
            "2607":{"pid":"2619","level":"2","mid":"2607","name":"COMPLIANT","children":[]},
            "2626":{"pid":"2619","level":"2","mid":"2626","name":"DISPATCHED","children":[]},
            "2627":{"pid":"2619","level":"2","mid":"2627","name":"HOURS","children":[]},
            "3057":{"pid":"2619","level":"2","mid":"3057","name":"OFFICE VISITS","children":[]},
            "3058":{"pid":"2619","level":"2","mid":"3058","name":"CENTER VISITS","children":[]}
        }

请帮帮我

最佳答案

假设在变量 a 中存储了你的对象

a = `{"l2_list": [2605,2608,2607,2626,2627,3057,3058],
    "children":
        {
            "2605":{"pid":"2619","level":"2","mid":"2605","name":"IDLING","children":[]},
            "2608":{"pid":"2619","level":"2","mid":"2608","name":"COMPLIANT DEPART","children":[]},
            "2607":{"pid":"2619","level":"2","mid":"2607","name":"COMPLIANT","children":[]},
            "2626":{"pid":"2619","level":"2","mid":"2626","name":"DISPATCHED","children":[]},
            "2627":{"pid":"2619","level":"2","mid":"2627","name":"HOURS","children":[]},
            "3057":{"pid":"2619","level":"2","mid":"3057","name":"OFFICE VISITS","children":[]},
            "3058":{"pid":"2619","level":"2","mid":"3058","name":"CENTER VISITS","children":[]}
        }}`

您可以填充按下一个代码排序的数组

sorted = [];
a.l2_list.forEach(number => {
   let str = number.toString();
    let obj = {};
     obj[str] = a.children[str];
   sorted.push(obj)
});

关于javascript - 按特定的给定顺序对 JSON 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56704770/

相关文章:

javascript - 如何在 Angular 2 的类方法中访问ajax数据

javascript - 映射数组值时使用异步等待

JavaScript从json迭代键和值?

javascript - getJSON 不起作用。厌倦了js问题

javascript - JavaScript 中的 "recursive AJAX callbacks"是如何工作的?

javascript - AngularJS:如何在加载时防止页面出现 "code flash"

C++ 作业 : Parallel Arrays from text file

php - php数组的结果是[value][value],我怎样才能得到像[value,value]这样的结果

python - 如何将 CSV 读入 Python 字典,其中每个键的值都是字典列表?

javascript - 在规范文件中,如何测试以事件作为参数的组件方法?