[英]Javascript syntax for accessing elements of associative arrays within arrays
我無法算出JavaScript語法來訪問以下元素,這些元素已從php / mysql作為JSON返回后進行了字符串化處理。
vehs
包含
[[{"vehID":"8","vehGrpType":"CAR","vehSubGrp":"Alfa Romeo","vehTitle":"Alfa Romeo 6C","vehPeriod":"","vehDescrip":"","vehNotes":"","vehGallery":"0","vehGallPath":"","vehGallImgs":""}],[{"vehID":"9","vehGrpType":"CAR","vehSubGrp":"Alfa Romeo","vehTitle":"Alfa Romeo 75 (1985-92)","vehPeriod":"","vehDescrip":"","vehNotes":"","vehGallery":"0","vehGallPath":"","vehGallImgs":""}],[{"vehID":"10","vehGrpType":"CAR","vehSubGrp":"Alfa Romeo","vehTitle":"Alfa Romeo GTV (1995-2000) and Spider (1995-2006)","vehPeriod":"","vehDescrip":"","vehNotes":"","vehGallery":"0","vehGallPath":"","vehGallImgs":""}]]
我在嘗試
for (var veh in vehs) {
$('#selectDIV').append(veh['vehTitle'] + '<br>');
}
但是我得到的只是數字0、1和2,我假設它們是三個條目的索引。
在此過程中,我對數組元素內的關聯數組有一些誤解。 因此,我有點受阻,知識不足,不知道接下來要嘗試哪種組合。
任何幫助都值得贊賞,因為我確信它非常簡單。
謝謝
關聯數組不是主數組的元素。
主數組由數組組成,這些數組僅包含關聯數組。 使用[0]
引用。
另外,由於vehs
是一個數組,因此我建議使用for (;;)
循環遍歷它,以使用戶定義的原型方法不會繼承。
出於性能原因,我建議最后附加字符串。
var string = [];
for (var i=0; i<vehs.length; i++) {
var veh = vehs[i];
string.push(veh[0]['vehTitle'] + '<br>');;
}
$('#selectDIV').append(string.join(''));
這是一個二維數組。 您有3個數組元素,每個數組元素包含一個對象。
for (var index in vehs) {
$('#selectDIV').append(vehs[index][0]['vehTitle'] + '<br>');
}
重新格式化后,您的數組如下所示:
vehs = [[{
"vehID": "8",
"vehGrpType": "CAR",
"vehSubGrp": "Alfa Romeo",
"vehTitle": "Alfa Romeo 6C",
"vehPeriod": "",
"vehDescrip": "",
"vehNotes": "",
"vehGallery": "0",
"vehGallPath": "",
"vehGallImgs": ""
}], [{
"vehID": "9",
"vehGrpType": "CAR",
"vehSubGrp": "Alfa Romeo",
"vehTitle": "Alfa Romeo 75 (1985-92)",
"vehPeriod": "",
"vehDescrip": "",
"vehNotes": "",
"vehGallery": "0",
"vehGallPath": "",
"vehGallImgs": ""
}], [{
"vehID": "10",
"vehGrpType": "CAR",
"vehSubGrp": "Alfa Romeo",
"vehTitle": "Alfa Romeo GTV (1995-2000) and Spider (1995-2006)",
"vehPeriod": "",
"vehDescrip": "",
"vehNotes": "",
"vehGallery": "0",
"vehGallPath": "",
"vehGallImgs": ""
}]]
您可以通過刪除多余的內部數組來簡化此操作:
objects = $(vehs).map([].pop)
然后以通常的jQuery方式進行迭代:
$(objects).each(function() {
console.log(this.vehTitle) // or whatever you want to do
})
如果只需要一個特定的屬性,則可以使用以下pythonesque實用程序函數從數組中“抽取”它:
itemgetter = function(prop) {
return function() { return this[prop] }
}
接着:
titles = $(objects).map(itemgetter('vehTitle'))
vehs
是一個數組,包含3個數組,每個數組包含一個對象。 因此,您必須使用:
for (var i = 0;i<vehs.length;(i=i+1)) {
$('#selectDIV').append(vehs[i][0].vehTitle + '<br>');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.