【发布时间】:2018-05-07 19:29:23
【问题描述】:
我有一个结构如下的数组:
var persons= [{name: 'John',
id: 1,
children :[{name :'John Jr',
id: 11,
children :[{name: 'John Jr Jr'
id: 111}]
},
{name :'Jane'
id: 12}]
},
{name:'Peter',
id :2
},
...]
它基本上是一个对象数组,对象是人,每个人可以有任意数量的后代,这些后代是他们自己的人对象数组。每个人的后代数量不详。
我想要实现的是以这种方式构建地图:
var personsMap =[1 : 'John',
11: 'John > John Jr',
111 : 'John > John Jr > John Jr Jr',
12: 'John > Jane',
...
]
它是每条路径的每个可能组合的映射,所以通过人的id查询映射,它应该返回它的父>祖父>...
的字符串我正在尝试以递归方式构建此地图,所以到目前为止我已经尝试过:
var personsMap = {};
function buildParentsMap (persons){
$.each (persons, function(ndx, person){
if(person.children && person.children.length > 0){
buildParentsMap(person.children);
}
personsMap[person.id] = person.name;
});
console.log(personsMap);
}
但这会输出以下内容:
[1 : 'John',
11: 'John Jr',
111 'John Jr Jr',
12: 'Jane',
...]
这是所有名称,但没有按照我上面解释的方式连接。 我怎样才能做到这一点?谢谢
【问题讨论】:
-
编号系统只是一个例子,便于理解问题。在我的真实情况下,ID 以不同的方式生成。
-
在否决投票之前,您是否至少完整阅读了这个问题?我完全看不出与复制品有什么共同之处
标签: javascript jquery arrays recursion