如何将使用推式提示创建的数组中存储的值相加

时间:2018-08-28 22:08:33

标签: javascript

我正在提示用户输入他们想在数组中存储多少个数字。然后,我提示用户输入每个数字并将其推入数组中,我可以正确显示数字,但是现在我要做的是将所有值加起来。我搜索了该网站,找到了几种解决方案,但是在使示例工作时仍然遇到问题。这是我到目前为止的代码。

function howManyValues(userValues) { 
    for(var i=0;i<userValues;i++) {
        myArray=[];
        myArray.push(prompt("Enter value postion"+i));
        
        document.write("These are the values you have entered: "+myArray+"<br>");
    }
} 

var userValues=prompt("How many values do you want to work with: ");
howManyValues(userValues);

6 个答案:

答案 0 :(得分:2)

让我们从现有代码中的错误开始。

您正在myArray循环中重新初始化for。这将在循环的每次迭代中将myArray重置为一个空数组。您需要将此变量移出循环。

接下来,您使用for循环提示用户输入他们指定的任意数字。那很棒。如果数字提示始于1,而不是0,则对用户更友好。

最后是您的问题。如何求和。您已经遍历并捕获了输入的用户值。简单的解决方案是将输入的值相加。

请注意,在求和之前,已将捕获的值强制转换为Number。这是因为prompt会将值返回为String,而不是Number

function howManyValues(count) {
    var values = [];
    var sum = 0;

    for (var i = 1; i <= count; i++) {
        var value = prompt('Enter value ' + i);
        
        values.push(value);
        sum += Number(value);

        document.write('These are the values you have entered: ' + values.join(', ') + '<br>');
    }

    document.write('The values entered have a sum value of: ' + sum + '<br>');
}


var count = prompt('How many values do you want to work with?');
howManyValues(count);

答案 1 :(得分:0)

您可以使用forloopreduce

减少:

myArray.reduce((prev, curr) => prev += curr, 0) // returns 15

for循环:

let result = 0
for (let i = 0; i < myArray.length; i++) {
   result += myArray[i]
}

// result is 15

编辑:@fubar的解决方案非常适合您的代码。

答案 2 :(得分:0)

您在每个循环中都将myArray声明为空数组,需要将其移到外部。

然后进行累加,可以使用reduce:

myArray.reduce((a, b) => a + b, 0)

所以您的代码应类似于:

function howManyValues(userValues) { 
    myArray=[];
    for(var i=0;i<userValues;i++) {
        myArray.push(parseInt(prompt("Enter value postion"+i)));
        document.write("These are the values you have entered: " + myArray[i] + "<br>");
    }
    document.write("The total of the values you have entered: " + myArray.reduce((a, b) => a + b, 0) + "<br>");
} 

var userValues=prompt("How many values do you want to work with: ");
howManyValues(userValues);

答案 3 :(得分:0)

数组 对象允许Discord存储键值集合。很好。

但是很多时候我们发现Adobe Reader需要一个有序的集合,其中有1st,2nd,3rd元素,依此类推。例如,我们需要用它来存储某些内容的列表:用户,商品,HTML元素等。

在这里使用对象iTunes并不方便,因为它没有提供管理元素顺序的方法。我们无法在现有属性之间插入新属性。对象并非旨在用于此类用途。

存在一个名为Array的特殊数据结构,用于存储有序集合。

答案 4 :(得分:0)

<script>
    function howManyValues(userValues) {
        let myArray = [];
        let sum = 0;

        for(let i = 0; i < userValues; i++) {
            let newVal = prompt("Enter value postion " + i);
            myArray.push(newVal);
            sum += parseInt(newVal);
        }
        document.write("The values you entered are " + myArray.join(', ') + " and their sum is " + sum + "<br>");
    }

    let userValues=prompt("How many values do you want to work with: ");
    howManyValues(userValues);
</script>

答案 5 :(得分:0)

这是我对此的最终答复。

function getUserInput(numbers){
userArray=[];
for(var i=1;i<=numbers;i++){
userArray.push(parseInt(prompt("Enter the No. "+i+" value: ")));
document.write(userArray[i-1]+"<br>");
}

document.write("The total for this array is: 
"+userArray.reduce((a,b)=>a+b,0));
}

var numbers=prompt("How many numbers do you want to enter: "); 
getUserInput(numbers);