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]) {