我有以下循环,它迭代数组,并尝试访问数组中当前位置的下一个位置。
for( var i in myArray){
var temp = myArray[i+1];
}
问题是它没有将 1 与 var i 相加,而只是将数字 1 附加到 i 上。 就像我是 2 并且我这样做
i+1
结果是
21
而不是 3。
为什么会这样以及如何添加这两个变量?
最佳答案
基本上,您正在迭代对象的键(数组是对象),键是 always strings (or symbol type in ES6) 。要转换为数字,您只需在其前面添加一元 plus
即可将字符串数字转换为数字。
var temp = myArray[+i + 1];
您可能会更好地使用带有计数器的经典迭代,例如
var i, temp;
for (i = 0; i < array.length; i++) {
temp = array[i + 1];
// some more code
}
因为 for ... in
会迭代对象的所有可枚举属性(如果存在)。欲了解更多信息,请阅读Why is using “for…in” with array iteration a bad idea?
关于javascript - JS中如何添加两个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45606940/