在做layui中遇到一个js问题,求教下各位大神

提问 已结 14 349
上官biu
上官biu 2019-3-9
悬赏:50飞吻
版本:layui 浏览器:
后端返回一个对象,如下图

pid_1表示这个是一级栏目然后id值为1
tid_1_1表示这是二级栏目,然后第一个1表示父级栏目(就是一级栏目)的id值为1,后面一个1表示该二级栏目的值

现在是要对这个对象进行处理吧这些数据进行分组,想把它分成这样的形式的保存。
menu:[
{
"pid":1,
"tid":1
},{
"pid":1,
"tid":2
},{
"pid":2,
"tid":1
},
]
求教下论坛大神,这样的应该要怎么做呢,,js不是很在行,抱歉了,
回帖
  • IDyun
    2019-3-9
    var obj={
    id:'',
    pid_1:"1",
    pid_2:"2",
    tid_1_1:"1",
    tid_1_2:"2",
    tid_1_3:"3",
    tid_1_4:"4",
    tid_2_1:"1",
    tid_2_2:"2",
    tid_2_3:"3"}

    var menu=[];
    layui.each(obj,function(pidKey,pidVal){
    //判断是否是一级栏目
    if(pidKey.indexOf('pid_')!=-1){
    //判断是否是二级栏目
    layui.each(obj,function(tidKey,tidVal){
    if(tidKey.indexOf('tid_'+pidVal)!=-1){
    menu.push({"pid":pidVal,"tid":tidVal});
    }
    });
    }
    });
    console.log({menu:menu})
    1 回复
  • lgxtry
    2019-3-9
    var d = {rolename:"dds"
    ,id:""
    ,pid:"1"
    ,pid:"2"
    ,tid_1_1:"1"
    ,tid_1_2:"2"
    ,tid_1_3:"3"
    ,tid_1_4:"4"
    ,tid_2_1:"1"
    ,tid_2_2:"2"
    ,tid_2_3:"3"
    ,tid_2_4:"4"
    ,tid_2_5:"5"
    };

    //获取属性名
    var keyNameArray = Object.keys(d);
    //定义结果对象
    var menuObj = {menu:[]};
    keyNameArray.forEach(element => {
    if(element.indexOf('_')>0){
    let nameArray = element.split('_');
    if(nameArray.length==3){
    menuObj.menu.push({pid:nameArray[1],tid:nameArray[2]});
    }
    }
    });
    console.log(menuObj);
    3 回复
  • IDyun
    2019-3-10
    $=layui.$
    var d = {rolename:"dds"
    ,id:""
    ,pid_1:"1"
    ,pid_2:"2"
    ,tid_1_1:"1"
    ,tid_1_2:"2"
    ,tid_1_3:"3"
    ,tid_1_4:"4"
    ,tid_2_1:"1"
    ,tid_2_2:"2"
    ,tid_2_3:"3"
    ,tid_2_4:"4"
    ,tid_2_5:"5"
    };

    //定义结果对象
    var menuObj = {menu:[]},pids={};
    //获取属性名
    $.each(Object.keys(d),function(index,item){
    let names = item.split('_');
    if(names.length > 2) {
    pids[names[1]] ? pids[names[1]].push(names[2]): pids[names[1]]=[names[2]];
    }
    });
    $.each(pids,function(key,val){
    menuObj.menu.push({'pid':key,tids:val});
    })
    console.log(menuObj);
    1 回复
  • 上官biu
    2019-3-9
    @lgxtry 太感谢了了,,,一直没思路怎么写,,好用,,
    0 回复
  • 上官biu
    2019-3-9
    @IDyun 完美,,这样的写法简洁好用,,高手,,[赞]
    0 回复
  • 上官biu
    2019-3-9
    @lgxtry
    如果需要这样的格式那应该如果改造呢,,好头疼遇到这样的,看起来数据越简洁越不会写[衰]
    "menu": [
    {
    "pid": 1,
    "tids": [1,2,3,4]
    }
    ]
    0 回复
  • 上官biu
    2019-3-9
    @IDyun 如果需要这样的格式那应该如果改造呢,,好头疼遇到这样的,看起来数据越简洁越不会写[衰]
    "menu": [
    {
    "pid": 1,
    "tids": [1,2,3,4]
    }
    ]
    0 回复
  • 大勇
    2019-3-9
    @上官biu 怎么样做的啊
    0 回复
  • 大勇
    2019-3-9
    @ai 你说呢
    0 回复
  • 大勇
    2019-3-9
    @lgxtry cessdfasd
    0 回复