经过两天的搜索,我被困住了,真的需要一些帮助。
我有一个javascript数组,当我遍历它时,它将为我提供每个后续数组的键。这在所有浏览器中都有效,但IE的某些版本除外。在IE的某些版本中,它似乎先按升序对数组重新排序,然后再返回键。Jquery的每个函数都做同样的事情。有没有一个等价于javascript for循环的循环,它不会对数组进行重新排序,并且仍然对每个人都有效?
var db = new Array();
db[259] = new Array(3);
db[259][0] = "John Smith";
db[259][1] = "Los Angeles";
db[259][2] = "Chicago";
db[917] = new Array(3);
db[917][0] = "Jane Smtih";
db[917][1] = "New York";
db[917][2] = "Tampa";
db[208] = new Array(3);
db[208][0] = "Jack Johnson";
db[208][1] = "Baltimore";
db[208][2] = "Milwaukee";
for(var i in db){document.write(i + " ");}
在大多数浏览器中,上述内容将输出259 917 208。这就是我想要的结果。
在某些版本的IE中,上述命令将输出208 259 917。看起来它首先按升序排列键。关键字在这里很重要,因为它是个人的ID #,排名也很重要(即,259应该在208之前)。其他函数引用dbi,其中i是人员的ID号。
有人能帮上忙吗?
发布于 2011-07-27 03:06:52
在JavaScript for-in
循环中不能保证数组的迭代顺序;但是,大多数JS实现会自然地对索引进行排序(当然,旧版本的IE除外)。
如果你提前知道了索引,你应该单独存储它们,以便进行显式迭代:
var idxs = [259, 917, 208], i;
for (i=0; i<idxs.length; i++) {
document.write(db[idxs[i]]);
}
发布于 2011-07-27 03:05:09
For...in
不适用于JavaScript中的数组,也不保证顺序,它适用于对象(数组恰好就是对象,这就是它“工作”的原因)。使用适当的for
或while
循环
参考:For...in
发布于 2011-07-27 03:15:20
您可能想看看jQuery的each()函数。
https://stackoverflow.com/questions/6835137
复制相似问题