首页 > javascript 生成 treenodes

javascript 生成 treenodes

function traverse(obj) {
    if (obj instanceof Array) {
        for (var i=0; i<obj.length; i++) {
            if (typeof obj[i] == "object" && obj[i]) {
                console.log(i);
                traverse(obj[i]);
            } else {
                callback(i, obj[i]);
            }
        }
    } else {
        for (var prop in obj) {
            if (typeof obj[prop] == "object" && obj[prop]) {
                traverse(obj[prop]);
            } else {
                //callback(prop, obj[prop]);
              callback(obj);
            }
        }
    }
}

var callback = function(){
   var a1 = arguments[0];
   console.log(a1);   
};


var arr= [
  {"name": "user1","parent": "null"},
 {"name": "user2","parent": "user1"},
 {"name": "user3","parent": "user1"},
 {"name": "user4","parent": "user2"},
 {"name": "user5","parent": "user4"}
];

traverse(arr);
/*
//这是我要的结果 
var arr = [
    {"parent":null, "name":"user1"},
    {"parent":"user1","expanded": true, items:[
        {"name": "user2","parent": "user1"},
        {"name": "user3","parent": "user1"},
    ]},
    {"parent":"user2","expanded": true, items:[
         {"name": "user4","expanded": true, "parent": "user2",items:[
             {"name": "user5","parent": "user4"}
         ]},
    ]}
];
*/

http://jsbin.com/qumofowave/1/edit?html,js,output


因为你数组里的每一个元素(对象),都有两个属性.
使用下面的测试数据将输出三次

var arr= [
    {"name": "user1","parent": "null","three":"3"},
    {"name": "user2","parent": "user1","three":"3"},
    {"name": "user3","parent": "user1","three":"3"},
    {"name": "user4","parent": "user2","three":"3"},
    {"name": "user5","parent": "user4","three":"3"}
];

在你的代码里

    } else {
        for (var prop in obj) {
            console.log(obj[prop], typeof obj[prop] == "object" && obj[prop]);//这里加一个console.log 你就明白了.
            if (typeof obj[prop] == "object" && obj[prop]) {
【热门文章】
【热门文章】