有没有相当于Python for for循环的JavaScript?

时间:2015-01-15 16:18:29

标签: javascript python loops for-loop iterator

所以我很失望地发现JavaScript for ( var in array/object)不等同于pythons for var in list:

在JavaScript中,您正在迭代索引本身,例如

0, 
1,
2,
... 

与Python一样,您正在迭代索引指向的值,例如

"string var at index 0", 
46, 
"string var at index 2",
["array","of","values"],
...

是否存在与Python的循环机制相当的标准JavaScript?

声明:

  

我知道for(对象中的var)构造用于迭代字典中的键,而不是通常在数组的索引上。我问一个与我不关心订单(或非常关心速度)的用例有关的具体问题,并且不想使用while循环。

3 个答案:

答案 0 :(得分:6)

对于一个最相似的数组是forEach循环(当然索引是可选的)

[1,2,3,4,].forEach(function(value,index){
  console.log(value);
  console.log(index);
});

所以你会得到以下输出:

1
0
2
1
3
2
4
3

答案 1 :(得分:4)

在下一版ECMAScript(ECMAScript6又名Harmony)中将for-of construct

for (let word of ["one", "two", "three"]) {
  alert(word);
}

for-of可用于迭代各种对象,数组,映射,集合和自定义可迭代对象。从这个意义上来说,它非常接近Python的for-in

答案 2 :(得分:0)

我不确定我看到的区别很大。在给定的索引/键

处访问该值很容易
var list = [1,2,3,4,5];

// or...

var list = {a: 'foo', b: 'bar', c: 'baz'};
for (var item in list) console.log(list[item]);

并且如上所述,你可以将forEach用于数组或对象......这是一个obj:

var list = {a: 'foo', b: 'bar', c: 'baz'}; 

Object.keys(list).forEach(function(key, i) {
    console.log('VALUE: \n' + JSON.stringify(list[key], null, 4));
});