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.

asked Jul 10, 2016 at 22:12
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);

answered Jul 10, 2016 at 22:28
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);

answered Jul 10, 2016 at 22:32

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 ]
marc_s
760k186 gold badges1.4k silver badges1.5k bronze badges
answered Jul 10, 2016 at 22:35

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
}
answered Jul 10, 2016 at 22:27

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();
answered Jul 10, 2016 at 23:28

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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.