【问题标题】:JavaScript, Using a for loop to calculate the sum of all the values within an arrayJavaScript,使用 for 循环计算数组中所有值的总和
【发布时间】:2017-12-16 07:28:40
【问题描述】:

我几周前才开始使用 JavaScript,但仍然有点挣扎。我需要创建一个循环来计算来自单独 .js 文件中的投票数组的所有值的总和。

该函数有一个参数,votes,代表五个投票数组之一(vote1 到 vote5)。在函数中添加以下命令:

一个。声明一个名为 total 的变量,将其初始值设置为 0。

b.创建一个 for 循环,循环遍历 votes 数组中的每一项,将该项的值添加到总变量中。

c。 for循环完成后,从函数中返回total变量的值。

这是我的 html 文件。

<script>
    function totalVotes()
    {
        var total = 0;

        for (i=0; i < votes.length; ++i)
            {
                total += votes[i];
            }
            return total;
    }

</script>

【问题讨论】:

  • 你会想了解对象和属性,将它们用作结构而不是那些许多变量。此外,数组和对象字面量。
  • ...了解function parameters
  • 你的循环很好。您的所有代码都缺少将votes 声明为函数的参数,以及实际调用(例如totalVotes(votes3))。
  • 向 StackOverflow 询问家庭作业问题时要小心。如果你直接从这里发布一些东西,你几乎肯定会被老师“询问”。您在 HTML 中的代码对于计算总数几乎是正确的,您应该说 var i = 0let i = 0 而不是 i=0

标签: javascript html arrays for-loop


【解决方案1】:

你可以使用 reduce 数组的方法。 Reduce 方法 根据数组中的元素给出连接值。例如:

const sum = [1,2,3].reduce(function(result,item) {
 return result + item;
}, 0);
console.log(sum);

上面的代码给出了输出 6,它是给定数组的总和。 您可以在我的 Gist 上查看其他数组方法:Iterate_Over_Array.js

【讨论】:

    【解决方案2】:

    你只需要传入你想要迭代的数组:

    var vote1 = [45125, 44498, 5143]
    
    function totalVotes(votes) {
      var total = 0;
      for (var i = 0; i < votes.length; i++) {
        total += votes[i];
      }
      return total;
    }
    
    // better alternative
    function tallyVotes(votes) {
      return votes.reduce((total, vote) => total + vote, 0);
    }
    
    console.log('for loop: ', totalVotes(vote1));
    console.log('reduce: ', tallyVotes(vote1));

    【讨论】:

      【解决方案3】:

      我建议创建 Javascript 对象而不是不同属性的数组。如果您使用对象,那么您将必须创建具有以下结构的对象数组 -

      var first_object = {
           'name':"Jeffrey Hart",
           'party':"D",
           'race':"1st Congressional District",
           'vote':"45125"
      }
      

      您将为每条记录创建对象并使用 Arrays.push 添加到您的数组中。让我们假设数组是记录,然后使用

      records.push(first_object)

      添加所有记录后,您将拥有对象数组,现在您可以使用简单的 forEach 循环对其进行跟踪

      var total = 0;
      records.forEach( function (record)
      {
          total+= record.vote;
      });
      

      如果您是 Javascript 新手,我建议您阅读

      JavaScript:Douglas Crockford 的优秀部分

      http://shop.oreilly.com/product/9780596517748.do

      【讨论】:

        【解决方案4】:

        你可以像下面这样添加数字

        for(let i = 0; i < product.length; i++)
         {
           var count1=+product[i].Pending;
           var count2=+product[i].Competed;
           this.totalCount=this.totalCount+(+count1)+(+count2);
        }
        

        totalCount:number=0; 的顶部全局声明totalCount

        【讨论】:

          【解决方案5】:

          你可以像下面这样添加数字

          let total = 0;
          for (let i = 0; i < this.state.seatArray.length; i++) {
              total += total + parseInt(this.state.seatArray[i].price);
          }
          

          谢谢

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-04-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多