私はループこの再帰関数には、本当にグローバル変数を使用する必要がありますか?
function deepFindGroup(groupName, currentGroup) {
console.log("Testing");
for (e in currentGroup) {
if (currentGroup[e].intName == groupName) {
console.log(currentGroup[e]["Members"]);
return currentGroup[e]["Members"];
} else if (currentGroup[e]["Members"]) {
return deepFindGroup(groupName, currentGroup[e]["Members"]);
}
}
}
ための私が意味のreturn文を持つすべての可能性を扱うことができないようであることを起こる再帰関数を持っています。たとえば、currentGroup [e] .intNameがgroupNameと等しくなく、そのブランチの子がメンバープロパティを持っていない(この場合、子はまったくありません)。それはundefinedを返して終わります。私が考えることができる唯一の解決策は、グローバル変数を作ることです、私はそれを回避しようとしています。
編集: この関数は、ツリー内の特定の枝を返すことになっています。ツリーは、 "Members"を含むオブジェクト(intNameプロパティを持つオブジェクト)で構成され、それ自体が他のメンバを含むオブジェクトになります。メンバーには何も含めることはできませんが、依然としてintNameを持っています。
はそのように見える:1つのブランチが発見が得られない場合
Gengroup_1--intName: Gengroup_1
|
--Members-- nochild -- intName: nochild
|
--Gengroup_2--intName: Gengroup2
|
--Members-- object -- intName: object
|
-- anotherObject -- intName: anotherObject
する必要がある機能は何ですか? – Ryan
ツリー内の特定のブランチの位置を返す –
より具体的に、してください。とにかく、何も見つからなかったことを知らせる価値(例えば、「ヌル」)と、子供の検索から戻る前にそれを確認する価値が必要になるでしょう。 – Ryan