【问题标题】:A task in JavaScriptJavaScript 中的任务
【发布时间】:2020-10-03 16:36:57
【问题描述】:

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

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

【问题讨论】:

标签: javascript task


【解决方案1】:

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

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

er 所做的正是 Maskin 所说的,以 for 循环开头,然后在每个增量中将其转换为字符串,以便我们可以拆分它,这可以解决 NAN 问题。 您不需要调用字符串,只需像在 let x 中那样执行一次,然后只需将拆分称为 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 函数运行自定义函数,将所有值相加为总和,最后在控制台中运行。

漂亮、简单和人工智能

【讨论】:

    【解决方案2】:

    因为“i[0]”,你得到了 NaN。您需要添加 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)
    
       }
     }
    

    【讨论】:

      【解决方案3】:

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

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

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

      顺便说一句,当您在 StackOverflow 上提问时,您的提问方式应该意味着与您有类似问题的人可以找到他们的答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-09
        • 2011-01-12
        • 2023-03-27
        • 2020-01-16
        • 2014-06-02
        • 2019-12-02
        • 2016-02-04
        • 1970-01-01
        相关资源
        最近更新 更多