2014-07-05 50 views
-1

工作,我有一個數組,我需要使用分別關於該項目,但和的forEach $。每個不工作的陣列這裏exmple(jsfiddle

var person = new Array(); 
person["firstName"] = "John"; 
person["lastName"] = "Doe"; 
person["age"] = 46; 
jQuery.each(person, function(index, item) { 
    alert(index + " : " + item); 
}); 
+0

我建議閱讀MDN JavaScript指南:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects –

回答

3

這是一個關聯數組,它實際上只是一個對象。你實際上應該聲明

var person = {}; 

如果要遍歷所有的對象鍵,那麼你應該這樣做,因爲這樣:

for (var x in person) { 
    alert(x, "and", person[x]) 
} 
+0

其工作,謝謝 – Pnsadeghy

2

這不是一個對象數組;它是一個你已經添加了字符串命名屬性的數組。 JavaScript不像PHP--數組和普通對象有明顯的區別。

$.each()函數會檢測到你已經傳遞給它一個數組實例,然後只有看看數字索引的屬性。您的字符串命名的屬性將被忽略。

聲明你的「人」對象作爲一個普通的對象,事情會更好的工作:

var person = {}; 

JavaScript數組是數字索引的屬性。如果你想要將字符串映射到值的東西,請使用普通對象。

1

當您使用forEach$.each()循環訪問數組時,它們會循環遍歷數字索引。其中您沒有任何給定的代碼是使用字符串屬性名稱創建屬性。使用一個對象而不是數組:

var person = {}; 
// other code as is 

然後,您將能夠使用$.each(),因爲它可以處理數組或純對象。你不會能夠使用array forEach method,因爲你不會有一個數組。

此外,你的小提琴不起作用,因爲你沒有在框架下包括jQuery框架&擴展部分在左邊。看到這個更新的工作版本:http://jsfiddle.net/4HJ4B/6/

0

試試這個:

var jsonStr = '[{"firstName": "John", "lastName": "Doe", "age": 46},{"firstName": "John-2", "lastName": "Doe-2", "age": 26}]'; 
var person = $.parseJSON(jsonStr); 
$(person).each(function(index, item) { 
    console.log(index + " : " + item.firstName); 
});