【问题标题】:How to create a for loop for an array with multiple elements?如何为具有多个元素的数组创建 for 循环?
【发布时间】:2016-07-10 22:12:50
【问题描述】:

我是一名学习 JavaScript 的学生,所以我的知识并不复杂,所以请温柔一点。 :)

我已经得到了:

var region1 = [1540, 1130, 1580, 1105];
var region2 = [2010, 1168, 2305, 4102];

var region3 = [2450, 1847, 2710, 2391];

var region4 = [1845, 1491, 1284, 1575];

var region5 = [2120, 1767, 1599, 3888];

括号中的每个数字代表季度的数字。我需要给出 for 循环来总结每个地区(加法)和每个季度(加到列)的销售额。我了解如何做单项数组。例如:

var sum=0;
for (var i = 0; i < totals.length; i++) {
sum += totals [i];
}

先谢谢你了。

【问题讨论】:

  • 你没有完全解释你想要什么帮助
  • 我看来你可以做(​​加法)很好,只需要帮助(加法)。我假设,例如,您希望在第一季度使用1540+2010+2450+1845+2120 = 9965。如果是这样,请查看@AdamAzad 的答案。
  • 抱歉,我没有更清楚我在寻找什么,但是是的,我确实需要帮助添加该列。谢谢!

标签: javascript arrays for-loop


【解决方案1】:

我不确定这是否是您所追求的,但我假设您想要所有五个地区的一个季度的总销售额;

var regions = {
    region1:[1540, 1130, 1580, 1105],
    region2:[2010, 1168, 2305, 4102],
    region3:[2450, 1847, 2710, 2391],
    region4:[1845, 1491, 1284, 1575],
    region5:[2120, 1767, 1599, 3888]
  };

var totalPerRegion = 0,
    quarter1 = 0,
    quarter2 = 0,
    quarter3 = 0,
    quarter4 = 0;

for(region in regions){
    // calculate the sales per quarters;
    quarter1 += regions[region][0];
    quarter2 += regions[region][1];
    quarter3 += regions[region][2];
    quarter4 += regions[region][3];
}

console.log('quarter 1:', quarter1);
console.log('quarter 2:', quarter2);
console.log('quarter 3:', quarter3);
console.log('quarter 4:', quarter4);

【讨论】:

    【解决方案2】:

    这里有两个功能可以满足您的要求。第一个将单个区域作为参数,并输出其数字的总和。

    第二个参数有两个参数 - 您想要总和的季度,以及一个包含所有区域的数组。

    var region1 = [1540, 1130, 1580, 1105];
    var region2 = [2010, 1168, 2305, 4102];
    var region3 = [2450, 1847, 2710, 2391];
    var region4 = [1845, 1491, 1284, 1575];
    var region5 = [2120, 1767, 1599, 3888];
    
    var allRegions = [region1, region2, region3, region4, region5];
    
    function getRegionTotal(region) {
      var total = 0;
      for (var i = 0; i < region.length; i++) {
        total += region[i];
      }
      return total;
    }
    
    var region1Total = getRegionTotal(region1);
    console.log('Region 1 total:', region1Total);
    
    function getQuarterTotal(quarter, regions) {
      var total = 0;
      for (var i = 0; i < regions.length; i++) {
        // Note that we reduce the quarter variable by one.  This is due to arrays being zero-based.
        total += regions[i][quarter - 1];
      }
      return total;
    }
     
    var quarter2Total = getQuarterTotal(2, allRegions);
    console.log('Quarter 2 total:', quarter2Total);

    【讨论】:

      【解决方案3】:

      我认为首先你应该获得一个数组数组:

      var region1 = [1540, 1130, 1580, 1105];
      var region2 = [2010, 1168, 2305, 4102];
      var region3 = [2450, 1847, 2710, 2391];
      var region4 = [1845, 1491, 1284, 1575];
      var region5 = [2120, 1767, 1599, 3888];
      var rawArr = [];
      rawArr.push(region1);
      rawArr.push(region2);
      rawArr.push(region3);
      rawArr.push(region4);
      rawArr.push(region5);
      

      然后您将能够处理跨列和向下列的添加:

      var summRegion = rawArr.map((element) => element.reduce((a, b)=> a + b,0));
      console.log(summRegion); // [ 5355, 9585, 9398, 6195, 9374 ]
      var sumColumns = [0,0,0,0];
      
      for (var i = 0; i < 4; i++)
          rawArr.forEach((element) => {sumColumns[i] += element[i]});
      
      console.log(sumColumns); // [ 9965, 7403, 9478, 13061 ]
      

      【讨论】:

        【解决方案4】:

        你的意思是这样的吗?

        var quarterlyResultsObj = {};
        for( var x = 0 ; x < region1.length ; x++ ){
            var thisQuarter = "quarter_" + x;
            var quarterResult = region1[x] + region2[x] + region3[x] + region4[x] + region5[x];  
            quarterlyResultsObj[ thisQuarter ] = quarterResult;
        }
        

        之后,您将拥有一个结构如下的对象:

        {
            quarter_1 : 6000,
            quarter_2 : 5000,
            quarter_3 : 7000,
            quarter_4 : 5600
        }
        

        【讨论】:

          【解决方案5】:

          我包括了季度和地区的计算。 工作示例可以在https://jsfiddle.net/d8hLc9L5/5/ 中找到。

          var regions = [
              [1540, 1130, 1580, 1105],
              [2010, 1168, 2305, 4102],
              [2450, 1847, 2710, 2391],
              [1845, 1491, 1284, 1575],
              [2120, 1767, 1599, 3888]
            ],
            countRegions = regions.length,
            countQuarter = 4;
          
          function SumQuarter() {
            for (var q = 0; q < countQuarter; q++) {
              var sumQuarter = 0;
              for (var r = 0; r < countRegions; r++) {
                sumQuarter = sumQuarter + regions[r][q];
          
              }
              console.log('quarter:' + (q + 1) + ' sum: ' + sumQuarter);
            }
          }
          
          function SumRegions() {
          
            for (var r = 0; r < countRegions; r++) {
              var sumRegions = 0;
              for (var q = 0; q < countQuarter; q++) {
                sumRegions += regions[r][q];
              }
              console.log('region:' + (r + 1) + ' sum: ' + sumRegions);
          
            }
          }
          SumQuarter();
          SumRegions();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-10-19
            • 1970-01-01
            • 2020-06-24
            • 1970-01-01
            • 1970-01-01
            • 2022-07-05
            • 2016-09-18
            • 2015-10-23
            相关资源
            最近更新 更多