我有JSON数据对象,其中不同深度有子项:
var obj = {
13: {
name: 'Test',
id: 13,
parentId: null,
children: {
2: {
name: 'Child',
id: 2,
parentId: 13,
children: {
34: {
name: 'One More',
id: 34,
parentId: 2
},
35: {
name: 'One More Child',
id: 35,
parentId: 2
}
}
}
}
}
};
我想创建函数,它将在以下类型的另一个结构中解析此数据对象:
var sortedObj = {
'One More Child': [35, 2, 13],
'One More': [34, 2, 13],
'Test': [13]
};
我想我应该递归地走树,但不知道如何开始。 创建函数来解决这种情况的正确方法是什么?
答案 0 :(得分:0)
function getNames(obj) {
var ret = { }
for(var id in obj) {
ret[obj[id]["name"]] = [ id ];
if("children" in obj[id]) {
var children = getNames(obj[id]["children"]);
for(var name in children) {
children[name].push(id);
}
Object.assign(ret, children);
}
}
return ret;
}