2013-06-05 43 views
0

我有一個現有的具有此結構的多維關聯數組。它有3個元素。每個子陣列都有3個元素。如何附加到JS關聯數組

{"id":"723419","lat":33.217,"lon":-92.817,"dist":1437.15733534053}, 
{"id":"723424","lat":33.567,"lon":-91.717,"dist":1902.4556686060116}, 
{"id":"722447","lat":32.383,"lon":-94.717,"dist":2317.6870313059217}, 

我想創建與3個元素通過陣列另一個(TEMP)陣列,並且循環,從而增加每個子陣列的元件,使得每個子陣列將有4個要素:

{"id":"723419","lat":33.217,"lon":-92.817,"dist":1437.15733534053,"elev":abc}, 
{"id":"723424","lat":33.567,"lon":-91.717,"dist":1902.4556686060116,"elev":def}, 
{"id":"722447","lat":32.383,"lon":-94.717,"dist":2317.6870313059217,"elev":ghi}, 

迄今,我已經通過我的臨時陣列

for (var i in tempArray) { //loop through locations returned with elevation data 
    multiArray[i]['elev']=... 
} 

試圖循環,把它作爲一個對象(即使我聲明瞭多陣列爲Array()

for (var i in tempArray) { //loop through locations returned with elevation data 
     multiArray.i.append(elev)=... 
} 

兩種方式,JS抱怨multiArray[i]不存在。從我對JS的瞭解,這應該起作用。

感謝您的幫助

+2

您正在循環tempArray,但嘗試訪問multiArray。您的清單是這樣的: - [{「id」:「723419」,「lat」:33.217,「lon」: - 92.817,「dist」:1437.15733534053}, {「id」:「723424」, 「lat」:33.567,「lon」: - 91.717,「dist」:1902.4556686060116}, {「id」:「722447」,「lat」:32.383,「lon」: - 94.717,「dist」:2317.6870313059217} ?對於數組,使用簡單的for循環而不是for循環。 for循環最適合不是數組的對象。 – pvnarula

+0

JavaScript不是PHP。不要使用'for .. in'在JavaScript中循環訪問數組,這是錯誤的事情(而不是使用從'i = 0'到'array.length'的常規'for'循環)。此外,這些是*對象*,而不是關聯數組。不管你使用'Array()'還是'[]'聲明它都沒有任何技術上的差異,但你應該總是使用'[]'。 – Tomalak

回答

1

我做簡單的演示已經預定義的值,然後創建另一個數組,得到它的從第一個數組值然後再添加新的元素elev

var arr = [{ 
    "id": "723419", 
     "lat": 33.217, 
     "lon": -92.817, 
     "dist": 1437.15733534053 
}, { 
    "id": "723424", 
     "lat": 33.567, 
     "lon": -91.717, 
     "dist": 1902.4556686060116 
}, { 
    "id": "722447", 
     "lat": 32.383, 
     "lon": -94.717, 
     "dist": 2317.6870313059217 
}]; 
var tempArray = new Array(); 
for (var item in arr) {  
    tempArray.push(arr[item]); 
    tempArray[item]["elev"] = "value"; //write here your value 
} 

JSFIDDLE

+0

'for .. in'不是在JavaScript中迭代數組的適當方式,因爲它列出了可能已添加到數組原型的所有成員。請使用正確的形式'for(i = 0; i Tomalak

+0

在ebram tharwat和@ pvnarula的答案之間,我找到了答案。但是,如果兩個數組的長度相同,那麼我要循環哪個數組?我仍然有陣列中的相同插槽 –