4

I'm a student studying JavaScript so my knowledge isn't complex, so please be gentle. :)

I have been given:

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

Each number in the bracket represents the numbers of the quarter. I need to give for loops that sum up the sales for each region (addition across) and for each quarter (addition down the column). I understand how to do single item arrays. For example:

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

Thank you in advanced.

3
  • 1
    You don´t quite explain what you want help with Commented Jul 10, 2016 at 22:18
  • I appears you can do (addition across) fine, just need help with (addition down the column). By that I'm assuming that, for example, you want 1540+2010+2450+1845+2120 = 9965 for the first quarter. If so look at @AdamAzad's answer. Commented Jul 10, 2016 at 22:35
  • Sorry for not being more clear with what I was looking for, but yes, I do need help adding down the column. Thank you! Commented Jul 10, 2016 at 23:29

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

Sign up to request clarification or add additional context in comments.

Comments

1

Here are two functions to do what I believe you're asking. The first takes a single region as an argument, and outputs the sum of its numbers.

The second takes two arguments - the quarter you'd like the sum of, and an array containing all regions.

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

Comments

1

I think first you should obtain a array of array :

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

Then you will be able to process addition across and addition down columns:

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 ]

Comments

0

Do you mean something like this?

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

after that you'll have an object structured like this:

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

Comments

0

I included both calculation for both quarter and regions. Working example can be found in 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();

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.