javascript multi-level menu help me!!!!



  • var nodes = [
    { idloai: 1, tenloai: 'The Thao', loaicha: 0 },
    { idloai: 2, tenloai: 'Giai Tri', loaicha: 0 },
    { idloai: 3, tenloai: 'Giao Duc', loaicha: 0 },
    { idloai: 4, tenloai: 'Dai Hoc', loaicha: 3 },
    { idloai: 5, tenloai: 'Du Hoc', loaicha: 3 },
    { idloai: 6, tenloai: 'Bong Da', loaicha: 1 },
    { idloai: 7, tenloai: 'Tennis', loaicha: 1 },
    { idloai: 8, tenloai: 'Boi Loi', loaicha: 1 },
    { idloai: 9, tenloai: 'Nhac Trong Nuoc', loaicha: 2 },
    { idloai: 10, tenloai: 'Nhac Quoc Te', loaicha: 2 },
    { idloai: 11, tenloai: 'MV Hay', loaicha: 2 },
    { idloai: 12, tenloai: 'nodejs', loaicha: 0 }
    ];

    function getMenu(f,c){
    var a=[];
    for(i=0; i<f.length; i++){
    if(f[i].loaicha===c){
    a.push({
    id:f[i].idloai,
    name:f[i].tenloai,
    sub:getMenu(f,i)
    });
    }
    }
    return a;
    }

    console.log(getMenu(nodes, 0));

    error : Maximum call stack size exceeded



  • cái sub:getMenu(f,i) của bạn sẽ chạy hoài với trường hợp i = 0 đấy bạn nên xem lại chỗ này



  • @Trần-Duy chỗ i thay bằng id



  • @Người-Lạ

    function getMenu(data, id_find) {
     return (function(arr) {
      for (var i = 0; i < data.length; i++) {
       (function(item) {
        if (!item || item.loaicha != id_find || !item.idloai || !item.tenloai) return;
        item = (function(json) {
         var sub = getMenu(data, json.id);
         if (sub.length > 0) json.sub = sub;
         return json;
        })({
         id: item.idloai,
         name: item.tenloai
        });
        return arr.push(item);
       })(data[i]);
      }
      return arr;
     })([])
    }
    
    [
       {
          "id": 1,
          "name": "The Thao",
          "sub": [
             {
                "id": 6,
                "name": "Bong Da"
             },
             {
                "id": 7,
                "name": "Tennis"
             },
             {
                "id": 8,
                "name": "Boi Loi"
             }
          ]
       },
       {
          "id": 2,
          "name": "Giai Tri",
          "sub": [
             {
                "id": 9,
                "name": "Nhac Trong Nuoc"
             },
             {
                "id": 10,
                "name": "Nhac Quoc Te"
             },
             {
                "id": 11,
                "name": "MV Hay"
             }
          ]
       },
       {
          "id": 3,
          "name": "Giao Duc",
          "sub": [
             {
                "id": 4,
                "name": "Dai Hoc"
             },
             {
                "id": 5,
                "name": "Du Hoc"
             }
          ]
       },
       {
          "id": 12,
          "name": "nodejs"
       }
    ]
    


  • This post is deleted!

Log in to reply