2010-12-07 72 views
0

所以,我有一個JSON字符串,我打算解析它,並提醒內容,就像這樣。解析時的額外值,然後循環遍歷一個JSON字符串

var json_string = '[1,2,3,4,5]'; 
var parsed_string = JSON.parse(json_string); 
for(x in parsed_string) alert(x) 

然而,我不僅得到了五行,我得到了一大堆額外的CRUD我沒有問... $構造函數,$家庭,追加,聯想等...

有沒有什麼辦法可以迭代通過這個數組而不碰到這些額外的值?

編輯:對於那些想知道 - 我後來意識到parsed_string.length返回適當的數組長度供我迭代。

回答

2

for in遍歷所有可枚舉的對象屬性;對於Javascript中的數組,這是所有元素,以及您添加到數組實例或原型鏈中的任何對象的所有方法/屬性。

這是你應該使用for ;;;來循環數組的單一原因。

var json_string = '[1,2,3,4,5]'; 
var parsed_string = JSON.parse(json_string); 
for(var i=0;i<parsed_string.length;i++) alert(parsed_string[i]); 
+0

嘿馬特 - 感謝您的快速回復。我一直使用PHP編碼時間過長,並且對foreach()過於自在。 :) – 2010-12-07 18:56:26

2

你應該通過一個JavaScript對象,這樣的循環:

for (var key in obj) { 
    if (obj.hasOwnProperty(key)) { 
     alert(obj[key]); 
    } 
} 

.hasOWnProperty()確保由key指定的屬性不被繼承。然而,你在這裏處理一個數組:

for (var i = 0; i < arr.length; i++) { 
    alert(arr[i]); 
}