爲什麼這隻會提醒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