2012-05-18 114 views
0

我有这样一个数据阵列,的元素添加到阵列

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

我想改写导游,使其包含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++ 
} 

现场演示: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);