JavaScript 中的任务

A task in JavaScript

我需要使用 whilefor 创建一个数字序列,其中包含数字符号的总和。

例如,我有一个从 1 到 10 的序列。在控制台中(如果我已经编写了代码)将只显示 1、2、3、4、5、6、7、8、9, 1.如果我在控制台中将它从 30 取到 40 将是 3,4,5,6,7,8,9,10,11,12,13。

我需要创建一个代码来显示从 1 到 100 的总和。我不知道该怎么做,但我需要在控制台中查看:

1
2
3
4
5
5
6
7
8
9
1
2
3
4

等等

我有一些代码,但我只有 NaN。我不知道为什么。你能给我解释一下吗?

for (let i = '1'; i <= 99; i++) { 
    let a = Number(i[0]);
    let b = Number(i[1])
    let b1 = Boolean(b)

    if (b1 == false) {
        console.log ('b false', a)
    }
    else {
        console.log ('b true', a + b)
    }
}

我希望你明白我在说什么。

所以 for 循环的工作方式是声明一个循环变量,然后声明循环条件,然后询问循环结束时会发生什么,通常是递增(这意味着获取变量并添加一个)。

当你说 let i = '1' 时,你实际上在做的是创建一个新字符串,当你要求 i[0] 时,它会为你提供字符串中的第一个字符。

您应该查找模运算符。您想要将单位数(可以通过除以 10 然后转换为 int 获得)添加到用模数获得的十位数字。

顺便说一句,当您在 Whosebug 上提问时,您应该以一种让与您有类似问题的人能够找到答案的方式提问。

你得到 NaN 因为“i[0]”。您需要添加 toString() 调用。

 for (let i = '1'; i <= 99; i++) {
   let a = Number(i.toString()[0]);
   let b = Number(i.toString()[1])
   let b1 = Boolean(b)
   if (b1 == false) {
     console.log('b false', a)
   } else {
     console.log('b true', a + b)

   }
 }

尽管我喜欢已接受的答案,但是从问题中我了解到您在问其他问题,即;

30 become 3+0=3
31 become 3+1=4
37 becomes 3+7=10

为什么我们检查布尔值超出了问题的范围

这是一个简单的 snnipet,它可以完全满足您的要求

for (let i = 30; i <= 40; i++) {
  let x=i.toString();
console.log( 'numbers from ' +i + ' are added together to become '+ (Number(x[0])+Number((x[1])||0)))
 }

他们所做的正是 Maskin 所说的,以 for 循环开始,然后在每个增量中将其转换为字符串,以便我们可以拆分它,这解决了 NAN 问题。 您不需要像 let x 中那样调用 string 一次,然后只需调用 split 为 x[0] 等等。

在第二个数字中,我们创建了一个自计算 (x[1])||0),如果没有第二个值,则为零。以下会像魅力一样工作

for (let i = 1; i <= 10; i++) {
  let x=i.toString();
console.log( 'numbers from ' +i + ' are added together to become '+ (Number(x[0])+Number((x[1])||0)))
 }
你有没有观察到 10

发生了什么

这是我真正的问题和解决方案,如果您不知道数字中数字的长度或者出于任何原因您要从病房的 100 开始盯着看怎么办。我们需要在代码中加入某种形式的 AI

for (let i = 110; i <= 120; i++) {
let x= Array.from(String(i), Number);

console.log(
x.reduce(function(a, b){ return a + b;})
);
};

您只需使用 Array.from 函数创建一个数组,然后使用简单的 Array.reduce 函数和 运行 自定义函数,将所有值相加作为总和,最后 运行在控制台中。

不错,简单又AI