2013-06-05 3 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}, 

Я хочу, чтобы создать другой (Temp) массив с 3-х элементов, а также цикл через массив, добавление элемента в каждой подрешетки, так что каждый подмассив будет иметь 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 in loop лучше всего подходит для объектов, а не массивов. – pvnarula

+0

JavaScript не PHP. Не используйте 'for .. in' для перебора массивов в JavaScript, это неправильная вещь (вместо этого используйте обычный цикл' for' от 'i = 0' до' array.length'). Кроме того, это * объекты *, а не ассоциативные массивы. Используете ли вы '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 я понял это. Однако, если два массива имеют одинаковую длину, имеет ли значение какой массив я перебираю? у меня все еще есть тот же слот в массиве –

Смежные вопросы