江山流水 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 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用