js json 樹轉json方法

var tree = [{
            id: "parent",
            parentId: "",
            name: "一級節點",
            childs: [{
                id: "child1",
                parentId: "parent",
                name: "一級節點",
                childs: []
            }, {
                id: "child2",
                parentId: "parent",
                name: "一級節點",
                childs: []
            }]
        }]

        function adsa(tree, key) {
            return tree.reduce(function(con, item) {
                var callee = arguments.callee;
                con.push(item);
                if(item[key] && item[key].length > 0) item[key].reduce(callee, con);
                return con;
            }, []).map(function(item) {
                item[key] = [];
                return item;
            })
        }
        var arr = adsa(tree, 'childs'); //輸出轉換後數組
        console.log(arr);node

function jsonToArray(nodes) {
          var r=[];
          if (Array.isArray(nodes)) {
            for (var i=0, l=nodes.length; i<l; i++) {
              r.push(nodes[i]); // 取每項數據放入一個新數組
              if (Array.isArray(nodes[i]["childs"])&&nodes[i]["childs"].length>0)
               // 若存在children則遞歸調用,把數據拼接到新數組中,而且刪除該children
                r = r.concat(jsonToArray(nodes[i]["childs"]));
                  delete nodes[i]["childs"]
            }
          }
          return r;
        }json

jsonToArray(tree)數組

相關文章
相關標籤/搜索