如何为具有多个元素的数组创建for循环?

4

我是一名学习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];

括号中的每个数字代表季度数。我需要编写循环,对每个地区(横向相加)和每个季度(纵向相加)进行销售额求和。我知道如何处理单个项数组。例如:

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

谢谢您提前的支持。


1
您没有很清楚地解释您需要的帮助内容。 - Mikael Puusaari
看起来你已经可以完成(跨行加法),只需要帮助一下(列内加法)。我理解的是,例如你想要第一季度的结果为1540+2010+2450+1845+2120 = 9965。如果是这样,请参考@AdamAzad的答案。 - Spencer Wieczorek
对于我之前提出的问题没有说得更清楚一点,抱歉。但是没错,我确实需要帮助沿列添加数据。谢谢! - Kimberly
5个回答

2

I am not sure if this what you are after, but I presume you want the total sales for a quarter in all the five regions;

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);


1
这里有两个函数来完成您所需的功能。第一个函数以单个区域作为参数,并输出其数字的总和。
第二个函数接受两个参数 - 您想要求和的季度和包含所有区域的数组。

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);


1
我认为首先你应该获得一个数组的数组:
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 ]

0
你是指像这样的东西吗?
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
}

0

我在计算中包括了季度和地区的计算。你可以在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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接