【问题标题】:Add sums of array. Display one output添加数组的总和。显示一个输出
【发布时间】:2017-08-16 03:49:53
【问题描述】:

更新:这个问题的答案如下。感谢在不同的线程上进行 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;
// }

【问题讨论】:

  • arrEquals = arr.push(); //turn string into var - 该评论关于该行的作用是错误的。该行丢弃了您在上一行中使用arrEquals = [] 创建的数组,并将其替换为.push()(不是数组)返回的值。如果只需要总数,则根本不需要第二个数组,可以直接循环 arr 数组。
  • 你的代码调试了吗?

标签: javascript arrays


【解决方案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);

【讨论】:

  • .reduce() 是“最佳”解决方案,但如果它更直接地与 OP 的代码相关,因为它们从字符串数组开始,答案会更好。 (另外,请注意,只需添加一个数字列表,您无需在第二个参数中传递初始的 0。)
  • @nnnnnn 是的,我主要是想完善答案。我还包括了完整性的初始值,因为它在大多数 reduce 操作中都是必需的(它还有助于避免任何奇怪,累加器由 undefinednull 值填充)。
【解决方案2】:

在您的循环中,您引用了类似 for (var a = 0; a &lt; arrEquals; a++){ 的 arrEquals。您需要像 for (var a = 0; a &lt; arrEquals.length; a++){ 一样引用它,因为仅引用数组并不能告诉 javascript 它有多长,或者计数到什么数字。 .length 返回一个数字,该数字是数组中有多少项。

【讨论】:

    【解决方案3】:
    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
        }
    

    【讨论】:

    • 至于第一个文本框区域的使用,这是我用来查看我可以访问数组中的项目然后将这些项目输出给用户的其他人的工作。 var arrEquals 是我访问数组的尝试。我的逻辑是让用户将数字输入数组。循环遍历每个数字。将数组中的每个数字相加。向用户显示输出。
    • 现在对于 for 循环,我应该在里面有一个被推入一个空数组来存储这些新值吗?
    • @WalterPurvis 是的,您将不得不使用 array.push() 方法将新值动态添加到数组中,而不会影响现有值。
    猜你喜欢
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 2021-11-22
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多