问题仍然适用于< code>for…of循环。
我知道JavaScript中基本的< code>for…in语法是这样的:
for (var obj in myArray) {
// ...
}
但是如何获取循环计数器/索引?
var i = 0;
for (var obj in myArray) {
alert(i)
i++
}
for (var i = 0; i < myArray.length; i++) {
var obj = myArray[i]
alert(i)
}
但我宁愿使用更简单的for-in
循环。我认为它们看起来更好,更有意义。
有没有更简单或更优雅的方式?
for i, obj in enumerate(myArray):
print i
这个怎么样
let numbers = [1,2,3,4,5]
numbers.forEach((number, index) => console.log(`${index}:${number}`))
其中 array.forEach
此方法有一个索引
参数,该参数是数组中正在处理的当前元素的索引。
在ES6中,最好使用for…of
循环。您可以在<code>中获得
for (let [index, val] of array.entries()) {
// your code goes here
}
请注意,< code>Array.entries()返回一个迭代器,这使得它可以在for-of循环中工作;不要将其与Object.entries()混淆,后者返回一个键值对数组。
< code>for…in迭代属性名,而不是值,并且以未指定的顺序进行(是的,甚至在ES6之后)。你不应该用它来迭代数组。对他们来说,ES5的< code>forEach方法将值和索引传递给你给它的函数:
var myArray = [123, 15, 187, 32];
myArray.forEach(function (value, i) {
console.log('%d: %s', i, value);
});
// Outputs:
// 0: 123
// 1: 15
// 2: 187
// 3: 32
或者ES6的Array.prototype.entries
,它现在支持跨当前浏览器版本:
for (const [i, value] of myArray.entries()) {
console.log('%d: %s', i, value);
}
但是,对于一般的可重复项(在这种情况下,您将使用< code>for…of循环,而不是< code>for…in),没有任何内置内容:
function* enumerate(iterable) {
let i = 0;
for (const x of iterable) {
yield [i, x];
i++;
}
}
for (const [i, obj] of enumerate(myArray)) {
console.log(i, obj);
}
演示
如果你真的有意思...in
– 枚举属性 – 您将需要一个额外的计数器。Object.keys(obj).forEach
可以工作,但它只包含自己的属性;为。。。in
包括原型链上任何位置的可枚举属性。
问题内容: 在遍历列表的Python循环中,我们可以编写: 并巧妙地遍历列表中的所有元素。有没有办法知道循环中到目前为止我循环了多少次?例如,我要列出一个清单,在处理完10个元素之后,我想对它们进行处理。 我考虑过的替代方案可能是: 要么: 是否有更好的方法(就像)来获得到目前为止的迭代次数? 问题答案: pythonic的方法是使用:
问题内容: 在下面的示例代码中,是否真的需要counter = 0,还是有更好,更多的Python方法来访问循环计数器?我看到了一些与循环计数器有关的PEP,但它们要么被延迟要么被拒绝(PEP 212 和PEP 281)。 这是我的问题的简化示例。在我的实际应用程序中,这是通过图形完成的,整个菜单必须每帧重新绘制一次。但这以易于复制的简单文本方式进行了演示。 也许我还应该补充一点,我正在使用Pyt
在循环中,我是否可以对循环使用相同的计数器变量? 或者这些变量会相互影响吗?以下代码应该为第二个循环使用不同的变量,例如,还是可以?
问题内容: 我有这个代码: 它显然不会编译,因为在匿名类中需要使用final。但是我不能将它定下来,因为事实并非如此。你会怎么做?一种解决方案是复制它,但我认为可能会有更好的方法: 编辑 只是为了清楚起见,为了示例,我在这里使用了Runnable,问题实际上是关于匿名类的,它可以是其他任何东西。 问题答案: 我认为您的解决方案是最简单的方法。 另一种选择是将内部类的创建重构为一个为您完成的工厂函数
正如标题所示,我需要做的是使用for循环计算数组的平均值。我所说的平均值是指