有没有一个JavaScript等同于Python的for循环

Is there a JavaScript equivalent to Python's for loops?

本文关键字:for 循环 Python 等同于 有一个 JavaScript      更新时间:2023-09-26

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

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

0, 
1,
2,
... 

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

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

有没有一个标准的JavaScript等同于Python的循环机制?

免責聲明:

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

在下一个版本的 ECMAScript(ECMAScript6 aka Harmony)中,将用于构造:

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

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

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

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

因此,您将获得以下输出:

1
0
2
1
3
2
4
3

我不确定我看到的区别有多大。很容易访问给定索引/键的值

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用于数组或对象...这是一个对象:

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));
});