我想在js里用循环的方法将数字相加,如输入1234,输出结果为10,现在我只设一个变量,不知道下面怎么做?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想在js里用循环的方法将数字相加,如输入1234,输出结果为10,现在我只设一个变量,不知道下面怎么做?相关的知识,希望对你有一定的参考价值。

var a=0;
a=parseInt(prompt(a));
for(var i=0;i<a.length;i++)
document.write(a.substr(i,1))

document.write(a)

可以先用split()函数将1234分割成数组【1,2,3,4,】,然后循环相加即可;
也可以直接用字符串的相加,比如var str=1234字符,你可以直接str[0]*1+str[1]*1+str[2]*1+str[3]*1;
JS的数据类型是弱数据类型,不用特意转换的,比如上面的你将字符串乘以1,它就自动转换成数字了追问

1234是举得列子,如果是用户输入小于10000的整数应该怎么写?

追答

var a=0;
a=window.prompt("请输入数字",1);
if(a)
var arr=a.split("");
var sum=0;
for(var i = 0;i<arr.length;i++)
sum+=parseInt(arr[i]);

console.log(sum);

这就是完整的 粘贴过去就行

参考技术A var a=0;
a=window.prompt("请输入数字",1);
if(a)
var arr=a.split("");
var sum=0;
for(i in arr)
sum+=parseInt(arr[i]);

document.write(sum)
参考技术B 1+2+3+4=10

如何将在JavaScript中保存为数组的数字与while循环相加

哪里出错了?我想对数组中的每个数字求和。警报说NaN

var numbers = [10, 42, 5, 87, 61, 34, 99];
var i = 0; 
var e = 0;
while(i <= numbers.length) {
    e = e + numbers[i]; 
    i++;
}

alert(e);
答案

问题在于数组长度您正在检查,因为数组索引从0开始。这样做时:

i <= numbers.length

您正在检查[0:10,1:42,2:5,3:87,4:61,5:34,6:99,7:???]因为数字长度是7.要解决它只需:

i < numbers.length 

您不检查数组中的现有数字。

以下是我们在学校的想法:

//main code//
var numbers = [10, 42, 5, 87, 61, 34, 99];
var result = sumIntArray(numbers);
//end of main code//

function sumIntArray(array){
    var result = 0;
    for (var i = 0; i < array.length; i++) {
        if (array[i].isInteger()) {
            result += array[i];
        } else {
            if (i === 0) {
                alert("1st object in array is not number, will skip...");
            } 
            else if (i === 1) {
                alert("2nd object in array is not number, will skip...");
            }  
            else if (i === 2){
                alert("3rd object in array is not number, will skip...");
            }    
            else {
                alert((i+1).toString() + "th object in array is not number, will skip...");
            }
        } 
    }
    return result;
}

for循环添加了这个i ++你在while循环中创建并使代码更清晰。 无需在主代码中声明我:)

  1. 始终使函数简化主代码。
  2. 即使有人想打破逻辑,也要制造永远不会出错的功能。

虽然不要让学校打破你的创造力,但你的代码很棒! :)

另一答案

这条线是原因:

while(i <= numbers.length) {

数组是0索引,所以你可以从索引0(包括)到numbers.length(不包括)。您将超出该限制,导致您访问未在给定索引处定义的元素。你必须这样做:

while(i < numbers.length) {
另一答案

或者使用ES2015语法,您可以这样做。

let numbers = [10, 42, 5, 87, 61, 34, 99];
let sum = numbers.reduce((a,b) => a + b);

你可以读懂Array.prototype.reduce(accumulator, element, callback, startingValue) here

另一答案

您的情况有误,只需使用<而不是<=

while(i < numbers.length) 
另一答案

有几种方法可以改善这一点。首先,你想改变你的条件i < numbers.length,而不是i <= numbers.length。正如你所写,最后一个数字永远不会被计算在内。

你可以改进的另一种方法是使用+=表示法 - 当你可以写e = e + numbers[i]时,没有必要写e += numbers[i]

另一答案

你可以从数组的末尾用qazxsw poi和qazxsw poi条件下的真实性检查。

在里面只需添加项目。

post increment

以上是关于我想在js里用循环的方法将数字相加,如输入1234,输出结果为10,现在我只设一个变量,不知道下面怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

求一个数组的数字有几种组合方式,6个数相加等于100.用PHP写的程式

如何在VISO里用公式?

用Python 实现将用户输入的数字相加求和

js数组相加

将一个数字的位数相加

如何用excel找出几个数相加等于固定值