江山流水 2018-10-28 14:31 采纳率: 66.7%
浏览 520
已采纳

JavaScript 怎么给一些有对应关系的数组封装成对应的对象?

已知一个无序数组,有一个初始id

根据这个初始ID 从数组中排出

//处理后的结果
 {tid:8836,child:[{tid:936,child:[...],tid:939...}]}                

//原始请求回来的数据
var begin_id = 8836;
var sub_list = [{
tid:8836,
sub:[936,939,972]
},{
tid:936,
sub:[872,811]
},{
tid:939,
sub:[762,755,703]
},{
tid:972,
sub:[644,691,672]
},{
tid:872,
sub:[544]
},{
tid:811,
sub:[435,435,435,435,435]
}]

求大佬们救命啊,我们后端不给处理,让我们自己处理

一些对应关系的数组 整理成map类型的数据

  • 写回答

5条回答

  • K beasts 2018-10-29 04:57
    关注

    昨晚答案,怎么不见了。修正了代码

    运行结果:

    {tid:8836,child:[{"tid":936,"child":[872,811]},{"tid":939,"child":[762,755,703]},{"tid":972,"child":[644,691,672]},{"tid":872,"child":[544]},{"tid":811,"child":[435,435,435,435,435]}]}
    

    代码:

    var begin_id = 8836;
    var sub_list = [{
    tid:8836,
    sub:[936,939,972]
    },{
    tid:936,
    sub:[872,811]
    },{
    tid:939,
    sub:[762,755,703]
    },{
    tid:972,
    sub:[644,691,672]
    },{
    tid:872,
    sub:[544]
    },{
    tid:811,
    sub:[435,435,435,435,435]
    }];
    
    for(key in sub_list){
        if(sub_list[key].tid == begin_id){
            var param = [];
            var k = key;
            for(key2 in sub_list){
                if (key != key2){
                    param.push({"tid":sub_list[key2].tid,"child":sub_list[key2].sub})
                }
            }
    
        }
    }
    
    
    var json = JSON.stringify(param);
        json = '{tid:'+sub_list[k].tid +",child:" + json + "}";
        json = JSON.parse(JSON.stringify(json));
    console.log(json);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog