首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript 'for-in‘函数是否只返回一个索引?

Javascript 'for-in‘函数是否只返回一个索引?
EN

Stack Overflow用户
提问于 2010-12-27 00:12:01
回答 6查看 10.6K关注 0票数 10

这是我尝试运行的方法:

代码语言:javascript
运行
复制
function SayHello() {
    cars = new Array();
    cars[0] = "Toyota";
    cars[1] = "Mitsubishi";
    cars[2] = "Honda";

    for (car in cars) {
        alert(car);
    }
}

返回的内容如下:

代码语言:javascript
运行
复制
0
1
2

当我将代码更改为以下代码时:

代码语言:javascript
运行
复制
function SayHello() {
    cars = new Array();
    cars[0] = "Toyota";
    cars[1] = "Mitsubishi";
    cars[2] = "Honda";

    for (car in cars) {
        alert(cars[car]);
    }
}

它正确地返回了名称。

我的问题是,for-in循环只是以有序的方式返回索引吗?谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-12-27 00:14:04

是的,它将是集合中的索引。

请参阅here

代码语言:javascript
运行
复制
var mycars = ["Saab", "Volvo", "BMW"];

for (var car in mycars)
{
  document.write(mycars[car] + "<br />");
}

正如您所看到的,使用变量作为集合的索引。

您可以使用for each ... in语法(在Javascript1.6中引入)来迭代值。参见here

for each...in -类似于for...in,但遍历对象的属性值,而不是属性名称本身。( JavaScript 1.6中的新功能。)

据我所知,Javascript 1.6+目前只在火狐中使用。

票数 8
EN

Stack Overflow用户

发布于 2010-12-27 00:20:34

是的,迭代器的值是属性的名称。然而,使用它在数组上循环是非常不受欢迎的。例如,考虑以下内容:

代码语言:javascript
运行
复制
x = ['a', 'b', 'c'];

x.foo = 'bar';

for (i in x) alert(i);  // 0, 1, 2, foo

它用于遍历对象的成员:

代码语言:javascript
运行
复制
x = { a : 'apple', b : 'banana', c : 'carrot' };

for (i in x) {
    // and it's best to check that the property actually exists
    // on this object, not just on one of its prototypal ancestors:
    if (x.hasOwnProperty(i)) {
        alert(i);  // 'a', 'b', 'c'
    }
}

有关使用YUI Blog的原因的更多信息

票数 9
EN

Stack Overflow用户

发布于 2010-12-27 00:14:37

是也不是。它返回索引,而不是值,并将它们作为带引号的字符串返回。"0“、"1”等。

这样做的好处是,如果您使用javascript对象作为关联数组,for in的工作方式是相同的。

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

https://stackoverflow.com/questions/4534488

复制
相关文章

相似问题

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