2013-06-05 45 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的答案之间,我找到了答案。但是,如果两个数组的长度相同,那么我要循环哪个数组?我仍然有阵列中的相同插槽 –