2012-05-18 2 views
0

У меня есть массив данных, как это,добавить элемент в массив

tourGuide: [ 
    {"location": "london"}, 
    {"location": "paris"}, 
    {"location": "frankfurt"} 
] 

Я хочу переписать Tourguide так, что она будет содержать indicies тоже. так что это будет что-то вроде:

tourGuide: [ 
    {"location": "london", "index":0}, 
    {"location": "paris", "index":1}, 
    {"location": "frankfurt","index":2} 
] 

Я попытался это,

var x, l=0; 
for(x in tourGuide){ 
    tourGuide["index"] = l; 
    l++; 
} 

, но это не может быть правильным подходом.

+0

Зачем вам это нужно? Если вы решите изменить порядок элементов, как вы будете идти в ногу с индексом? Если вы хотите получить объект из массива, вам нужно знать индекс * в любом случае *. – cspray

ответ

2
var x, l=0; 

for(x in tourGuide){ 

tourGuide[x]["index"] = l; 
l++; 

} 
1

Попробуйте это:

for(var i=0;i<tourGuide.length;i++){ 
    tourGuide[i].index=i 
} 

//----or more simplified...---- 

var i=0; 
for(;i<tourGuide.length;){ 
    tourGuide[i].index=i++ 
} 

ЖИВОЙ DEMO:http://jsfiddle.net/DerekL/qvdzR/

Но на самом деле, вы действительно не должны создавать index, так как они находятся в массиве, они уже имеют значение index.

1

Я предлагаю вам забыть о собственности location и просто создать простой массив. Если вы не собираетесь добавлять дополнительные свойства позже, регулярный массив предоставит вам числовой индекс. Только что:

var output = array(); 
for (var i=0; i<tourGuide.length; i++) { 
    // Just stick each of the locations onto a plain old array 
    output.push(tourGuide[i].location; 
} 

console.log(output); 
Смежные вопросы