更新:这个问题的答案如下。感谢dougtesting在另一个线程上。 add array together, display sum
function hello() {
var arr = [];
for (var i = 0; i < 10; i++) {
arr.push(prompt('Enter number' + (i+1)));
}
var total = 0;
for(i=0; i<arr.length; i++) {
var number = parseInt(arr[i], 10);
total += number;
}
console.log(total);
}
//答案结束。
我试图让用户输入10个数字。然后将这些数字加在一起并将输出显示给用户。我能够将输入(10)的数量输入到数组中,但是我无法获得数组内容。我觉得我错过了一些简单的事情。你介意看看吗?
// https://stackoverflow.com/questions/28252888/javascript-how-to-save-prompt-input-into-array
var arr = []; // define our array
for (var i = 0; i < 10; i++) { // loop 10 times
arr.push(prompt('Enter number' + (i+1))); // push the value into the array
}
alert('Full array: ' + arr.join(', ')); // alert the result
var arrEquals = []; //Empty Arr
arrEquals = arr.push(); //turn string into var
alert (arrEquals);//show string to admin for debug
//(for loop) console out # of array elements. does not output what is in array
//this is half the battle
for (var a = 0; a < arrEquals; a++){
var a = Number(a); //ensure input is Number()
console.log(a + "A"); //used for debug
}
//taks sums in array and adds them together
//this is the other half of the problem
// https://www.w3schools.com/jsref/jsref_forEach.asp
// var sum = 0;
// var numbers = [65, 44, 12, 4];
// function myFunction(item) {
// sum += item;
// demo.innerHTML = sum;
// }
答案 0 :(得分:1)
这可能是Javascript在数组.reduce()
函数中内置的最简单的例子之一。实际上,您“将数组缩减为单个值”。
通过获取数组并在每个项目上运行函数来实现reduce。这个“回调”函数接收上一个函数返回的值,以某种方式处理它,然后返回一个新值。值得注意的是,reduce函数还接受第二个参数,该参数充当将在第一次传递给回调函数的初始值。
array.reduce(callbackFunction, initialValue);
以下是用于对数组求和的reduce的示例。
var result = [1,2,3,4,5,6,7,8,9,10].reduce(function(accumulator, currentValue) {
return accumulator + currentValue;
}, 0); // start with an initial value of 0
console.log(result);
使用ES6语法,可以进一步简化为单行
var result = [1,2,3,4,5,6,7,8,9,10].reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(result);
答案 1 :(得分:0)
var arr = []; // define our array
for (var i = 0; i < 10; i++) { // loop 10 times
arr.push(prompt('Enter number' + (i+1))); // push the value into the array
}
arr = arr.join(', ');
alert('Full array: ' + arr); // alert the result
var arrEquals = []; //Empty array
arrEquals.push(arr); //assign arr string to an empty array
alert (arrEquals[0]); //show array[0] string to admin for debug
这是你在找什么?您需要将arr.join()结果放入变量,就像它本身一样。
如果您没有在其上推送新的数组项,则根本不应该使用arr.push()
//(for loop) console out # of array elements. does not output what is in array
//this is half the battle
for (var a = 0; a < arrEquals.length; a++){
//a is always a int in this case
console.log(a + "A"); //used for debug
}
答案 2 :(得分:0)
在你的循环中,你引用了像for (var a = 0; a < arrEquals; a++){
这样的arrEquals。你需要像for (var a = 0; a < arrEquals.length; a++){
那样引用它,因为只引用数组并不会告诉javascript它有多长,或者要计算的数量。 .length返回一个数字,该数字是数组中的项目数。