为什么这只会提醒1?递归函数循环通过obj道具不起作用
function test() {
var myobj = {
a : '1st level prop',
b : 'findme',
c : {
aa : '2nd level prop',
bb : 'findme',
cc : {
aaa : '3rd level prop',
bbb : 'findme'
}
}
}
function countem(needle,haystack) {
var count = count || 0;
for(var i in haystack) {
if (typeof(haystack[i]) == 'object') {
countem(needle,haystack[i]);
} else {
if (needle == haystack[i]) {
count++;
}
}
}
return count;
}
alert(countem('findme',myobj));
}
我对JavaScript并不完全熟悉,但是在数组和对象之间没有区别吗?在我看来,'typeof(haystack [i])=='object''返回false,因此只计算它找到的第一个。此外,它应该添加计数的结果,因为它启动了一个新的函数... – animuson 2010-03-06 19:17:06
@animuson:你不熟悉JavaScript,这是你如何看待对象的属性。 – Hogan 2010-03-06 19:22:09