[英]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.