JavaScript 中的任务
A task in JavaScript
我需要使用 while
或 for
创建一个数字序列,其中包含数字符号的总和。
例如,我有一个从 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
我需要使用 while
或 for
创建一个数字序列,其中包含数字符号的总和。
例如,我有一个从 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)))
}
这是我真正的问题和解决方案,如果您不知道数字中数字的长度或者出于任何原因您要从病房的 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