我正在尝试递归遍历一棵对象树,其中包含对象的对象包含对象,构建字符串,并将该字符串作为VSCode扩展的一部分返回。
type categories = { [key: string]: { [key: string]: { [key: string]: string } } };
const recurseThroughTree = (categories: categories, outputString: string = '', i: number = 0): string => {
if (i < 2) {
const categoryKeys: Array<string> = Object.keys(categories);
const randomCategoryIndex: number = categoryKeys.indexOf(categoryKeys[Math.floor(categoryKeys.length * Math.random())]);
const randomCategoryName: string = categoryKeys[randomCategoryIndex];
const randomCategories: any = categories[randomCategoryName];
outputString += `${randomCategoryName} > `;
i = i + 1;
recurseThroughTree(randomCategories, outputString, i);
} else {
outputString += categories.text;
// This logs the correct output
console.log(outputString);
return outputString;
}
};
我希望它返回outputString(可以正确记录),但是它返回的是undefined。
答案 0 :(得分:3)
我认为您在调用递归函数时错过了回报:
i = i + 1;
return recurseThroughTree(randomCategories, outputString, i);