簡體   English   中英

用於訪問數組中關聯數組元素的Javascript語法

[英]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(''));

演示: http//jsfiddle.net/NgmFP/

這是一個二維數組。 您有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.

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