首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript For循环并不总是在IE中工作

Javascript For循环并不总是在IE中工作
EN

Stack Overflow用户
提问于 2011-07-27 03:02:38
回答 3查看 1.6K关注 0票数 0

经过两天的搜索,我被困住了,真的需要一些帮助。

我有一个javascript数组,当我遍历它时,它将为我提供每个后续数组的键。这在所有浏览器中都有效,但IE的某些版本除外。在IE的某些版本中,它似乎先按升序对数组重新排序,然后再返回键。Jquery的每个函数都做同样的事情。有没有一个等价于javascript for循环的循环,它不会对数组进行重新排序,并且仍然对每个人都有效?

代码语言:javascript
运行
复制
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号。

有人能帮上忙吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-27 03:06:52

在JavaScript for-in循环中不能保证数组的迭代顺序;但是,大多数JS实现会自然地对索引进行排序(当然,旧版本的IE除外)。

如果你提前知道了索引,你应该单独存储它们,以便进行显式迭代:

代码语言:javascript
运行
复制
var idxs = [259, 917, 208], i;
for (i=0; i<idxs.length; i++) {
  document.write(db[idxs[i]]);
}
票数 3
EN

Stack Overflow用户

发布于 2011-07-27 03:05:09

For...in不适用于JavaScript中的数组,也不保证顺序,它适用于对象(数组恰好就是对象,这就是它“工作”的原因)。使用适当的forwhile循环

参考:For...in

票数 2
EN

Stack Overflow用户

发布于 2011-07-27 03:15:20

您可能想看看jQuery的each()函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6835137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档