对于循环不记录任何内容

For loops don't log anything

本文关键字:记录 任何内 循环 于循环      更新时间:2023-09-26

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

为什么我的代码没有记录正确的数字?

i是一个整数。 i.length未定义。 length 是字符串和数组对象的属性,但不是整数的属性。 因此,for循环正在比较index <= undefined。 这种比较是false的,你永远不会真正进入for循环。

因为数字没有字符串属性。将其转换为字符串

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);

如上文所述i是一个数字,没有字符串属性。没有双循环,它读起来更好。请改用match

for (var i = 1; i < 2001; ++i) {
    if (i.toString().match(/7/g) != null) {
        console.log(i);
    }
}
相关文章: