Javascript for循环计数器作为字符串输出
javascript for loop counter coming out as string
我已经把程序简化成这样,但它仍然不正常:
var grid = [0, 1, 2, 3];
function moveUp(moveDir) {
for (var row in grid) {
console.log('row:');
console.log(row + 5);
}
}
看起来row
是一个字符串而不是整数,例如输出是
row:
05
row:
15
row:
25
row:
35
而不是5,6,7,8,这是我想要的。for循环中的计数器不应该是字符串吗?
引自for..in
的MDN Docs,
for..in
不应该用来迭代索引顺序的Array
是很重要的。数组索引只是可枚举的属性整数名称,在其他方面与一般对象相同属性。不能保证……它将返回索引以任何特定顺序排列,它将返回所有可枚举的属性,包括具有非整数名称的属性和具有继承。因为迭代的顺序取决于实现,迭代遍历数组时,不能以一致的顺序访问元素。因此最好使用带有数字索引(或
Array.forEach
)的for循环或非标准的for...of
循环)在数组上迭代时访问顺序很重要。
你正在用for..in
迭代一个数组。这很糟糕。当你迭代for..in
时,你得到的是字符串格式的数组索引。
每次迭代,'0' + 5 == '05'
, '1' + 5 == '15'
…正在打印
你应该做的是,
for (var len = grid.length, i = 0; i < len; i += 1) {
console.log('row:');
console.log(grid[i] + 5);
}
关于为什么数组下标在迭代中返回以及其他有趣的东西的更多信息,请查看我的答案
对于数组,您应该使用普通的for
循环而不是for...in
循环。
for (var row = 0, l = grid.length; row < l; row++) {
console.log('row:');
console.log(5 + row);
}
我认为这是你期望的输出。
小提琴
尝试使用parseInt(..)方法强制int
console.log(parseInt(row,10) + 5);
第二个参数10将被解析为十进制值。
看到这里的答案我如何添加一个整数值与javascript (jquery)的值's返回一个字符串?
相关文章:
- 如何将angularjs中的javascript字符串输出为循环数组
- Javascript将数组转换为字符串并使其反向输出
- 以字符串形式输出Javascript中的日期
- 编辑输出字符串函数ol.control.MouseControl
- 输出包含3个单词的字符串中的前2个单词
- 如何转义php中的新行字符以输出为javascript字符串值
- jQuery从选项的输出字符串中选择HTML选项
- 如何通过JavaScript将二进制(输入)转换为字符串(输出)
- 字符串输出中的 JavaScript 变量
- js 错误的字符串输出
- 如何将数字2.00作为一个完整的字符串输出
- Javascript -使用字符串输出HTML
- 递归字符串输出
- 如何在javascript中从xml字符串输出特定xml元素的所有值
- PHP json编码-数组键不作为字符串输出
- 浏览器和服务器javascript中的十六进制字符串输出不同
- 使用javaScript将字符串输出到HTML
- 以 ng 重复显示字符串输出
- Javascript for循环计数器作为字符串输出
- 设计一个Javascript对象,在每个新的Date()中作为字符串输出到console.log