【发布时间】:2016-07-14 23:54:22
【问题描述】:
我正在尝试使用递归计算对象中的字符串数,包括嵌套对象和数组中的字符串。为什么我得到 3 而不是 7;
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,但忽略了它的返回值。 -
如果这是您的想法,它不会增加调用者范围内的
count变量。每个调用都有自己的count。
标签: javascript function recursion