for循环不记录任何内容

时间:2016-03-20 01:23:44

标签: javascript math

我使用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
}

为什么我的代码没有记录相应的数字?

3 个答案:

答案 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