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