【发布时间】:2015-03-10 14:10:21
【问题描述】:
我有这个 json 对象https://gist.github.com/motleydev/f49c779b3ed8c6522df9,我正在用 lodash 进行转换。我正在尝试通过使用一些递归来循环遍历母/父条目,直到没有更多有效条目来构建单个项目的谱系。
这是我正在使用的功能:
function getLineage(id) {
var data = horses[id];
if (!data){
return;
}
else
{
return {
name: data.name,
father: getLineage(data.father),
mother: getLineage(data.mother)
};
}
};
它适用于一两代,但现在使用这个更大的数据集,我要么 A:如果我在 x 次循环后没有放入终止开关,则会收到超出调用堆栈的警告,或者 B:限制到位不会遍历所有数据,即使是已确认母亲、父亲条目的数据。我也只使用其中 15 个条目作为递归的起点。让我知道是否有什么可以帮助您更清楚地了解这个问题。
谢谢。
【问题讨论】:
-
什么“id”值是起点?
-
您的数据中是否有可能存在循环,其中一匹马指向父亲/母亲等,最终回到原来的马?
-
if(data.father==id || data.mother==id) return;为每一匹马修复它 -
例如:记录 331314307773 与它的母亲具有完全相同的 id。
-
@Pointy:GIGO。最奇怪的是她的名字是 DARIETTA 而不是 EVE...
标签: javascript json recursion lodash