簡體   English   中英

如何訪問所有嵌套的關聯數組元素?

[英]How to access all nested associative array elements?

情況:我從jQuery <-> PHP Ajax請求接收JSON數組。 這是未解析的JSON aray的結構:

{"Focus":{"id":2,"brand":"Ford","name":"Focus"}}

然后使用JSON.parse(json); 結構看起來像:

    Focus: Object
       brand: "Ford"
       id: 2
       name: "Focus"

問題:我想訪問所有數組的“第一層”元素並將它們像一個對象一樣使用,但是以下任何一種方法均無效:

for (var entity in dataTable)
{
   formattedText += entity['brand'] + " " + entity['name'] + "<br>";
   OR
   formattedText += entity.brand + " " + entity.name + "<br>";
   OR
   formattedText += dataTable[0]['brand'] + " " + dataTable[0]['name'] + "<br>";
}

任何解決方案如何讀取此數組中所有對象的值?

for..in循環使用 ,而不自己返回元素: for (var key in dataTable)
然后,您將使用dataTable[key]訪問每個元素。 關鍵實際上是元素的名稱。

您可以像在for..of循環中那樣使用它,但這是所有瀏覽器尚不支持的新功能。

演示:

 var dataTable = {"Focus":{"id":2,"brand":"Ford","name":"Focus"}} var formattedText = "" for (var key in dataTable) { formattedText += dataTable[key]['brand'] + " " + dataTable[key]['name'] + "<br>"; } document.write(formattedText) 

Object.keys將返回object的所有鍵的數組

您可以通過keys循環( forEach / for-loop )以獲得預期的輸出。

使用forEach

 var dataTable = { "Focus": { "id": 2, "brand": "Ford", "name": "Focus" } } var keys = Object.keys(dataTable); var str = ''; keys.forEach(function(item) { str += dataTable[item].brand + " " + dataTable[item].name; }); alert(str); 

使用for-loop

 var dataTable = { "Focus": { "id": 2, "brand": "Ford", "name": "Focus" } } var keys = Object.keys(dataTable); var str = ''; for (var i = 0, len = keys.length; i < len; i++) { str += dataTable[keys[i]].brand + " " + dataTable[keys[i]].name; } alert(str); 

編寫此代碼的正確語法為:

循環時,將在變量實體中獲取鍵名,然后使用該鍵名獲取值,此外,還需要訪問第一個鍵(即Focus)內的關聯數組

var dataTable = JSON.parse('{"Focus":{"id":2,"brand":"Ford","name":"Focus"}}');
var formattedText = '';
for (var entity in dataTable.Focus) {
    formattedText += dataTable.Focus['brand'] + " " + dataTable.Focus['name'] + "<br>";
}

聽起來您在錯誤地使用每個功能。 在每個函數中,將參數更改為鍵和值,如下所示:

$.each(dataTable, function (key, value) {
     //access key and values here
});

在您的情況下,您應該再次遍歷鍵和鍵值的值。

暫無
暫無

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

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