簡體   English   中英

$ .each不適用於jQuery中的對象數組

[英]$.each Doesn't work for object array in jquery

我有一個數組,我需要使用每個項目,但是forEach和$ .each不能在這里為數組工作( jsfiddle

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

那是一個關聯數組,實際上只是一個對象。 要枚舉某個對象obj的鍵值對,請使用for循環:

for (let key in obj) {
    console.log(key, ":", obj[key])
}

那不是對象數組。 它是一個已添加字符串名稱屬性的數組。 JavaScript與PHP不一樣-數組和純對象之間有明顯的區別。

$.each()函數將檢測到您已將其傳遞給數組實例,然后它將查看數字索引屬性。 您的以字符串命名的屬性將被忽略。

將您的“人”對象聲明為普通對象,然后效果會更好:

var person = {};

JavaScript數組用於數字索引屬性。 如果需要將字符串映射到值的內容,請使用普通對象。

當您使用forEach$.each()遍歷數組時,它們遍歷數字索引。 鑒於您的代碼正在使用字符串屬性名稱創建屬性,因此您沒有任何意義。 使用對象而不是數組:

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

然后,您將可以使用$.each() ,因為它可以處理數組或純對象。 將無法使用數組forEach方法,因為那時您將沒有數組。

同樣,您的小提琴也不起作用,因為您沒有在左側的Frameworks&Extensions部分下包括jQuery。 請參閱此更新的工作版本: http : //jsfiddle.net/4HJ4B/6/

嘗試這個:

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);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM