我有一个像这样的对象
test: {
title: '1'
parent: {
title: '0'
parent: {
title: '-1'
parent: {
title: '-2'
} } } }
然后没有任何parent
向下(对于这个test
对象,但它可能是其他人)。
我需要为所有1 0 -1 -2
个对象创建字符串test
,无论其深度如何。
var title = test.title + test.parent.title + test.parent.parent.title + ...
但是,由于我事先并不知道链条对于所有这些链条有多深,并且对于不同的对象可能有所不同,有没有办法做到这一点?
答案 0 :(得分:1)
使用recursion,您可以遍历该对象,在每一步返回标题和子标题的串联。
var collectTitles = function (node) {
var result = node.title;
if (node.parent) {
result += collectTitles(node.parent);
}
return result + ' ';
};
var title = collectTitles(test);
在第一步,collectTitles
将会调用test
; node.title
为' 1',它将被设置为result
变量的值。由于test
包含parent
,条件将匹配,collectTitles(test.parent)
将依次评估,其结果将连接到' 1'。
test.parent
,test.parent.parent
和test.parent.parent.parent
将重复相同的操作。对于最后一个,result
将被设置为' -2',并且因为它没有parent
,该函数将返回实际的&#39}。 -2'串。最终结果将是:
1·0·-1·-2·
如果无法接受前导空格,您可以执行以下操作之一:
返回数组而不是连接,join this array。