2012-03-23 63 views
0

如何在獲得AJAX響應後動態創建數組?如何根據AJAX響應動態創建ARRAY?

變量data.villages是我的迴應。

在使用jQuery每個函數的值

我循環:

$.each(data.villages, function(key, value) { 

    //Here I have the 2 variables: value.id and value.name 

    //Now I need to build a array where the value.id is the KEY and the content is name : value.name 

    //After I need to create an array with all the arrays 

}); 

我的最後一個數組應該是這樣的:

[ 234141 : [{ name: 'vila1', othervariable: 'othervalue' }] ] 

我需要這個來獲得名義值(或任何其他財產)通過知道身份證....

你能告訴我通過知道ID如何得到這個數據的例子嗎?

+1

爲什麼不只是使用JSON開始呢? – 2012-03-23 20:49:24

+2

這是一個無效的數組。它是一種「關聯數組」嗎? – 2012-03-23 20:49:37

+0

就像Rob說的那樣,即使它看起來像一個數組,它也不會。在JavaScript中,數組是零原始索引的,索引是隱式構建的。 JavaScript會將你的「數組」視爲一個對象,所以不妨將它作爲一個對象。然後根據Diodeus,您可以僅使用JSON發送數據對象,而不必進行任何其他處理。 – 2012-03-23 20:53:59

回答

0

我覺得你的最後一個數組是錯誤的:

[ 234141 : [{ name: 'vila1', othervariable: 'othervalue' }] ] 

必須是:

[ 
    { 234141 : [{ name: 'vila1', othervariable: 'othervalue' }] } 
] 

即與用id = 234141和值[{名對象的數組:.. ..}]

可以實現與:

data.villages = "your returned data array"; 
var newArray = [ { 234141: [] } ]; 
$.each(data.villages, function(key, value) { 
    newArray[0]['234141'].push({key: value}; 
} 
+0

酷...但是,我淨ID值(234141)也dinamically ...可以做到這一點? – user1281591 2012-03-23 21:22:31

0

你可以嘗試像

arr = new Array(); 
arr[value.key] = {var1: 'vila1', var2: 'vila2'}; 

你只是存儲JSON

2

若要從您的JSON響應對象的數組,你應該能夠做這樣的事情:

var arrayOfObjects = []; 

for (var i = 0, var dataLength = data.villages.length; i < dataLength; i++) { 
     arrayOfObjects.push(data.villages[i]); 
} 

我認爲你實際上想要的是一個對象。你可以這樣對象:

var objectFromJson= {}; 

for (var i = 0, var dataLength = data.villages.length; i < dataLength; i++) { 
     var currentItem = data.villages[i]; 
     objectFromJson[currentItem.WhatEverPropertyYouWantForTheKey] = currentItem; 
}