我使用javaScript解决数学问题,以获得有关特定范围内整数的一些数据,具有特殊条件。
我使用for
循环来增加范围内的数字(1到2000)。另一个for
循环检查整数的每个数字(如果它包含7
,如果是,则将其记录到控制台。
var i;
for (i = 1; i < 2001; i++) {
for (var index = 0; index <= i.length; index++) {
if (i.substring(index, index + 1) == 7) {
console.log(i);
}
}
}
目前,我没有输出,只有undefined
。也没有错误消息。
for (var i = 1; i < 2001; i++) {
for (var index = 0; index <= i.length; index++) {
console.log(index); //No output - undesired
}
console.log(i); //Prints out i from 1 to 2000 - desired
}
为什么我的代码没有记录相应的数字?
答案 0 :(得分:2)
i
是一个整数。 i.length
未定义。 length
是字符串和数组对象的属性,但不是整数。因此,for
循环正在比较index <= undefined
。此比较为false
,您实际上从未进入for
循环。
答案 1 :(得分:1)
因为数字不具有字符串属性。将其转换为字符串
for (var i = 1; i < 2001; ++i)
for (var i_str = i.toString(), index = 0; index <= i_str.length; ++index)
if (i_str.substring(index, index + 1) == 7)
console.log(i);
答案 2 :(得分:1)
如上所述,@YourEndDateTime
是一个数字,并且没有字符串属性。没有双循环,它读得更好。请改用i
:
match