1
再帰を使用してネストされたオブジェクトや配列の文字列を含むオブジェクトの文字列の数を数えようとしています。なぜ私は7の代わりに3を得ているのですか?この再帰関数で何が問題になっていますか?
function strCount(obj, count = 0){
for (var key in obj) {
if (typeof obj[key] === 'object') {
strCount(obj[key], count);
} else if (typeof obj[key] === 'string') {
count++;
}
}
return count;
}
var myobj = {
first: "1",
second: "2",
5: 'sd',
third: false,
fourth: ["anytime",2,3,4],
fifth: null,
sixth: undefined,
seventh:{ ana: 'hell', did: 5, boo : 'foo', har : ['kill', 5]}
};
alert(strCount(myobj));
あなたは再帰的に 'strCount'を呼び出し、その戻り値を無視しています。 – Bergi
呼び出し元のスコープ内で 'count'変数を増やすことはありません。すべての呼び出しには独自の 'count'があります。 – Bergi