我有以下循环迭代数组,我尝试访问数组中当前位置的下一个位置.
for( var i in myArray){
var temp = myArray[i+1];
}
Run Code Online (Sandbox Code Playgroud)
问题是它没有添加1与var i,但它只是在i上添加数字1.就像我是2,我这样做
i+1
Run Code Online (Sandbox Code Playgroud)
结果是
21
Run Code Online (Sandbox Code Playgroud)
而不是3.
为什么这样,我怎么能添加这两个变量?
基本上,您正在迭代对象的键(数组是对象),键始终是字符串(或ES6中的符号类型).要转换为数字,您可以plus在其前面添加一个一元数字,用于将弦乐数字转换为数字.
var temp = myArray[+i + 1];
Run Code Online (Sandbox Code Playgroud)
您可以使用计数器更好地使用经典迭代,例如
var i, temp;
for (i = 0; i < array.length; i++) {
temp = array[i + 1];
// some more code
}
Run Code Online (Sandbox Code Playgroud)
因为for ... in迭代对象的所有可枚举属性(如果存在).有关更多信息,请参阅为什么在数组迭代中使用"for ... in"是一个坏主意?