Solved

# Javascript - array question - Basic

Posted on 2011-02-23
157 Views
Hi

Basic question but just can't get my head round it.

This javascript program details the maximum no of visitors. But there are two months with the same ammount of visitors. How can I get it to output both the months and the number of visitors?

``````var maximumVisitors;
var visitorsArray = [88,62,200,100,200,34,123,34,76,199,145,11] ;
var monthNamesArray = ['January','February','March','April','May','June','July','August','September','October','November','December'];

maximumVisitors = 0;

for (var month = 1; month < visitorsArray.length; month = month + 1)
{
if (visitorsArray[month] > visitorsArray[maximumVisitors])
{
maximumVisitors = month;
}
}
document.write('Maximum Monthly Visitors of  '
+ visitorsArray[maximumVisitors] + ' was in '
+ monthNamesArray[maximumVisitors]);
``````
0
Question by:buzzy333
• 3
• 3
• 2
• +1

LVL 40

Expert Comment

make it

var maximumVisitors = new Array();
var visitorsArray = [88,62,200,100,200,34,123,34,76,199,145,11] ;
var monthNamesArray = ['January','February','March','April','May','June','July','August','September','October','November','December'];

maximumVisitors = 0;

for (var month = 1; month < visitorsArray.length; month = month + 1)
{
if (visitorsArray[month] > visitorsArray[maximumVisitors])
{
maximumVisitors[maximumVisitors.length] = month;
}
}
for ( var counter = 0; counter < maximumVisitors.length; counter++)
document.write('Maximum Monthly Visitors of  '
+ visitorsArray[maximumVisitors] + ' was in '
+ monthNamesArray[maximumVisitors]);
0

LVL 16

Expert Comment

First time through the loop, keep track of the NUMBER of maximum visitors, not the month.

Second time through the loop, print any month that actually had that number.

``````var maximumVisitors;
var visitorsArray = [88,62,200,100,200,34,123,34,76,199,145,11] ;
var monthNamesArray = ['January','February','March','April','May','June','July','August','September','October','November','December'];

maximumVisitors = 0;

for (var month = 1; month < visitorsArray.length; month = month + 1)
{
if (visitorsArray[month] > maximumVisitors)
{
maximumVisitors = visitorsArray[month];
}
}

for (var month = 1; month < visitorsArray.length; month = month + 1)
{
if (visitorsArray[month] == maximumVisitors)
{
document.write('Maximum Monthly Visitors of  '
+ visitorsArray[month] + ' was in '
+ monthNamesArray[month]);
}
}
``````
0

LVL 29

Accepted Solution

Göran Andersson earned 500 total points
First find the highest value, the get all months that have that value:
``````var visitorsArray = [88,62,200,100,200,34,123,34,76,199,145,11];
var monthNamesArray = ['January','February','March','April','May','June','July','August','September','October','November','December'];

var max = 0;
for (var i = 1; i < visitorsArray.length; i++) {
max = Math.max(max, visitorsArray[i]);
}

var months = [];
for (var i = 1; i < visitorsArray.length; i++) {
if (visitorsArray[i] == max) months.push(monthNamesArray[i]);
}

document.write('Maximum Monthly Visitors of  '
+ max + ' was in '
+ months.join(', ');
``````
0

Author Comment

sjklein42 output produced 'Maximum Monthly Visitors of 200 was in MarchMaximum Monthly Visitors of 200 was in May'

How would I get it it to produce the output as follows: ' Maximum monthly Visitors of 200 was in March & May'

0

LVL 16

Expert Comment

This should do it:

``````var maximumVisitors;
var visitorsArray = [88,62,200,100,200,34,123,34,76,199,145,11] ;
var monthNamesArray = ['January','February','March','April','May','June','July','August','September','October','November','December'];

maximumVisitors = 0;

for (var month = 1; month < visitorsArray.length; month = month + 1)
{
if (visitorsArray[month] > maximumVisitors)
{
maximumVisitors = visitorsArray[month];
}
}

var count = 0;
for (var month = 1; month < visitorsArray.length; month = month + 1)
{
if (visitorsArray[month] == maximumVisitors)
{
if ( ! (count++) )
{
document.write('Maximum Monthly Visitors of  '
+ visitorsArray[month] + ' was in '
+ monthNamesArray[month]);
}
else
{
document.write(' & ' + monthNamesArray[month]);
}
}
}
``````
0

LVL 29

Expert Comment

That change was easily made in the code that I suggested. Simply change the string ", " into " & ":
``````var visitorsArray = [88,62,200,100,200,34,123,34,76,199,145,11];
var monthNamesArray = ['January','February','March','April','May','June','July','August','September','October','November','December'];

var max = 0;
for (var i = 1; i < visitorsArray.length; i++) {
max = Math.max(max, visitorsArray[i]);
}

var months = [];
for (var i = 1; i < visitorsArray.length; i++) {
if (visitorsArray[i] == max) months.push(monthNamesArray[i]);
}

document.write('Maximum Monthly Visitors of  '
+ max + ' was in '
+ months.join(' & ');
``````
0

Author Comment

Hi guys.

for the question posed. I cannot use any other variables and command and should use the following structured code:

For each day
If the vistors  that month equals the maximum
Write out ‘the greatest monthly visitors was on ‘
Write out abbreviated name of the month followed by a space
End if
End for.

Cheers

guys
0

LVL 16

Expert Comment

Do you really mean "For each day" ?  I'm guessing you meant "For each month".

This should do it:

``````var maximumVisitors;
var visitorsArray = [88,62,200,100,200,34,123,34,76,199,145,11] ;
var monthNamesArray = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];

maximumVisitors = 0;

for (var month = 0; month < visitorsArray.length-1; month++)
{
if (visitorsArray[month] > maximumVisitors)
{
maximumVisitors = visitorsArray[month];
}
}

for (var month = 0; month < visitorsArray.length-1; month++)
{
if (visitorsArray[month] == maximumVisitors)
{
document.write("the greatest monthly visitors was on '  + monthNamesArray[month] + ' ');
}
}
``````
0

LVL 29

Expert Comment

I cannot use any other variables and command and should use the following structured code

Why? Is this a homework assignment?
0

## Featured Post

### Suggested Solutions

Foreword (July, 2015) Since I first wrote this article, years ago, a great many more people have begun using the internet.  They are coming online from every part of the globe, learning, reading, shopping and spending money at an ever-increasing ra…
Someone recently asked me about how to display a progress indicator on a page while an iframe is loading. And I remember when I first came across this myself. It was a bit tricky to get my head around, but really, it's very simple. The most impor…
In this Micro Tutorial viewers will learn how to create navigation buttons that change on rollover, using CSS (Continuation of the CSS Image Sprite tutorial) Create a parent ID for all the list items       - Specify position: absolute and display: block…
The viewer will receive an overview of the basics of CSS showing inline styles. In the head tags set up your style tags: (CODE) Reference the nav tag and set your properties.: (CODE) Set the reference for the UL element and styles for it to ensu…