Javascript 按特定的给定顺序对JSON数组进行排序
我有一个来自远程api的json响应。在这个JSON中,我有一个l2_列表,它描述了各个子级的排序顺序 我想根据“l2_列表”顺序对孩子进行排序 我有一个json数组,如下所示:Javascript 按特定的给定顺序对JSON数组进行排序,javascript,arrays,json,sorting,Javascript,Arrays,Json,Sorting,我有一个来自远程api的json响应。在这个JSON中,我有一个l2_列表,它描述了各个子级的排序顺序 我想根据“l2_列表”顺序对孩子进行排序 我有一个json数组,如下所示: var TreeObj = `{ "RULE_JSON": { "2674":{ "pid":"0", "level":"1", "mid":"2674",
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个孩子,如下所示:
"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 = `{"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中,键在对象中的显示顺序不能像您在最终代码段中指定的那样得到保证。(进一步阅读:)。至少,您需要将“children”的值重构为一个数组。可以以不同的方式访问JSON吗?也许迭代l2_列表并调用元素。每个元素的子元素[list2_listElement],为什么需要它?如果已经在数组中对ID进行了排序,那么为什么用它来按所需顺序检索子项还不够呢?迭代l2_列表数组,并将每个值用作子数组的索引。@gaetanoM,它不是重复的,我想按照l2_列表中给定的顺序对数组排序。它不起作用