我有一个这样的物体
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 + ...
但是,由于我事先不知道所有这些链的深度,对于不同的对象可能有所不同,有没有办法做到这一点?
使用递归,您可以遍历对象,并在每一步骤返回标题和子标题的串联。
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
,因此该函数将返回实际的'-2'字符串。最终结果将是:
1·0·-1·-2·
如果不能接受前导空格,则可以执行以下任一操作:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句