javascript - 按特定给定顺序对 JSON 数组进行排序
问题描述
我有一个来自远程 api 的 json 响应。在那个 JSON 中,我有一个 l2_list,它描述了各个孩子的排序顺序。
我想根据“l2_list”顺序对孩子进行排序。
我有一个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 个子项,如下所示:
"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)
});
推荐阅读
- session - 无法限制 WSO2 身份服务器上的最大会话
- c# - 我可以在外部 try/catch 捕获异常后处理 using 块吗?
- ios - 在 iOS 环境中工作时如何定位 Flutter AppAvailability 插件的 String uri?
- java - 隐藏导航时沉浸式模式留下略透明的白条
- r - 有谁知道如何通过托管的 Shiny 应用程序与位于 Dropbox 上的 .xlsx 文件进行交互?
- javascript - 在 Windows 中,我们如何让电子 js 应用程序在任务管理器中保持运行
- javascript - 在将卡添加到 Stripe 帐户时,提供一张设置了“货币”字段的卡
- reactjs - React createSlice 的 extraReducers 的状态访问
- nginx - 请求标头或 Cookie 太大,但我们在限制范围内
- pytorch - Computing intermediate gradients using backward method in Pytorch