# Learn Advanced Array Methods by Building a Statistics Calculator - Step 22

### Tell us what’s happening:

Describe your issue in detail here.
I have written this piece of code, please assist on what is missing, or what is wrong. I dont really understand

### Your code so far

`````` const median = array.length % 2 === 0
? [sorted[Math.floor(array.length / 2) - 1], sorted[Math.floor(array.length / 2)]]
: sorted[Math.floor(array.length / 2)];
``````
``````<!-- file: index.html -->
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="./styles.css" />
<script src="./script.js"></script>
<title>Statistics Calculator</title>
<body>
<h1>Statistics Calculator</h1>
<p>Enter a list of comma-separated numbers.</p>
<form onsubmit="calculate(); return false;">
<label for="numbers">Numbers:</label>
<input type="text" name="numbers" id="numbers" />
<button type="submit">Calculate</button>
</form>
<div class="results">
<p>
The <dfn>mean</dfn> of a list of numbers is the average, calculated by
taking the sum of all numbers and dividing that by the count of numbers.
</p>
<p class="bold">Mean: <span id="mean"></span></p>
<p>
The <dfn>median</dfn> of a list of numbers is the number that appears in
the middle of the list, when sorted from least to greatest.
</p>
<p class="bold">Median: <span id="median"></span></p>
<p>
The <dfn>mode</dfn> of a list of numbers is the number that appears most
often in the list.
</p>
<p class="bold">Mode: <span id="mode"></span></p>
<p>
The <dfn>range</dfn> of a list of numbers is the difference between the
largest and smallest numbers in the list.
</p>
<p class="bold">Range: <span id="range"></span></p>
<p>
The <dfn>variance</dfn> of a list of numbers measures how far the values
are from the mean, on average.
</p>
<p class="bold">Variance: <span id="variance"></span></p>
<p>
The <dfn>standard deviation</dfn> of a list of numbers is the square
root of the variance.
</p>
<p class="bold">
Standard Deviation: <span id="standardDeviation"></span>
</p>
</div>
</body>
</html>
``````
``````/* file: styles.css */
body {
margin: 0;
background-color: rgb(27, 27, 50);
text-align: center;
color: #fff;
}

button {
cursor: pointer;
background-color: rgb(59, 59, 79);
border: 3px solid white;
color: white;
}

input {
background-color: rgb(10, 10, 35);
color: white;
border: 1px solid rgb(59, 59, 79);
}

.bold {
font-weight: bold;
}
``````
``````/* file: script.js */
const getMean = (array) => array.reduce((acc, el) => acc + el, 0) / array.length;

// User Editable Region

const getMedian = (array) => {
const sorted = array.sort((a, b) => a - b);
const median = array.length % 2 === 0
? [sorted[Math.floor(array.length / 2) - 1], sorted[Math.floor(array.length / 2)]]
: sorted[Math.floor(array.length / 2)];

}

// User Editable Region

const calculate = () => {
const value = document.querySelector("#numbers").value;
const array = value.split(/,\s*/g);
const numbers = array.map(el => Number(el)).filter(el => !isNaN(el));

const mean = getMean(numbers);

document.querySelector("#mean").textContent = mean;
}
``````

### Your browser information:

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36`

### Challenge Information:

Learn Advanced Array Methods by Building a Statistics Calculator - Step 22

You appear to have created this post without editing the template. Please edit your post to Tell us what’s happening in your own words.

### Tell us what’s happening:

I wrote code for this challenge step, but i cant seem to get it right. Please assist

### Your code so far

``````  ? [sorted[Math.floor(array.length / 2) - 1], sorted[Math.floor(array.length / 2)]]
: sorted[Math.floor(array.length / 2)];

``````
``````<!-- file: index.html -->
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="./styles.css" />
<script src="./script.js"></script>
<title>Statistics Calculator</title>
<body>
<h1>Statistics Calculator</h1>
<p>Enter a list of comma-separated numbers.</p>
<form onsubmit="calculate(); return false;">
<label for="numbers">Numbers:</label>
<input type="text" name="numbers" id="numbers" />
<button type="submit">Calculate</button>
</form>
<div class="results">
<p>
The <dfn>mean</dfn> of a list of numbers is the average, calculated by
taking the sum of all numbers and dividing that by the count of numbers.
</p>
<p class="bold">Mean: <span id="mean"></span></p>
<p>
The <dfn>median</dfn> of a list of numbers is the number that appears in
the middle of the list, when sorted from least to greatest.
</p>
<p class="bold">Median: <span id="median"></span></p>
<p>
The <dfn>mode</dfn> of a list of numbers is the number that appears most
often in the list.
</p>
<p class="bold">Mode: <span id="mode"></span></p>
<p>
The <dfn>range</dfn> of a list of numbers is the difference between the
largest and smallest numbers in the list.
</p>
<p class="bold">Range: <span id="range"></span></p>
<p>
The <dfn>variance</dfn> of a list of numbers measures how far the values
are from the mean, on average.
</p>
<p class="bold">Variance: <span id="variance"></span></p>
<p>
The <dfn>standard deviation</dfn> of a list of numbers is the square
root of the variance.
</p>
<p class="bold">
Standard Deviation: <span id="standardDeviation"></span>
</p>
</div>
</body>
</html>
``````
``````/* file: styles.css */
body {
margin: 0;
background-color: rgb(27, 27, 50);
text-align: center;
color: #fff;
}

button {
cursor: pointer;
background-color: rgb(59, 59, 79);
border: 3px solid white;
color: white;
}

input {
background-color: rgb(10, 10, 35);
color: white;
border: 1px solid rgb(59, 59, 79);
}

.bold {
font-weight: bold;
}
``````
``````/* file: script.js */
const getMean = (array) => array.reduce((acc, el) => acc + el, 0) / array.length;

// User Editable Region

const getMedian = (array) => {
const sorted = array.sort((a, b) => a - b);
const median = array.length % 2 === 0
? [sorted[Math.floor(array.length / 2) - 1], sorted[Math.floor(array.length / 2)]]
: sorted[Math.floor(array.length / 2)];

}

// User Editable Region

const calculate = () => {
const value = document.querySelector("#numbers").value;
const array = value.split(/,\s*/g);
const numbers = array.map(el => Number(el)).filter(el => !isNaN(el));

const mean = getMean(numbers);

document.querySelector("#mean").textContent = mean;
}
``````

### Your browser information:

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36`

### Challenge Information:

Learn Advanced Array Methods by Building a Statistics Calculator - Step 22

### Tell us what’s happening:

please assist with the code snippet below. I dont understand exactly whats wrong

### Your code so far

``````const median = array.length % 2 === 0
? [sorted[Math.floor(array.length / 2)], sorted[Math.floor(array.length / 2 - 1)]] : sorted[Math.floor(array.length / 2)];

``````

The problem is here:

You forgot to call the `getMean` function which you pass the array you are making to.

and this line is handling the case where the `length` is even, so if you divide it by 2, no matter what the result will be integer.

So no need to the `Math.floor( )` method, However you used it the right way in the `:` case where the `length` is odd so you need to use it.

And lastly to pass the test, just need to swap the ` -1` to the next one.

sorted[array.length / 2], sorted[array.length / 2 - 1]

No difference in execution, it’s just for the tests

``````const median = array.length % 2 === 0
? getMean([sorted(array.length / 2), sorted[array.length / 2 - 1]]) : sorted[Math.floor(array.length / 2)];
``````

is this better? or there is still something wrong

little typo, use the square bracket for the array `[ ]` instead of parentheses ` ( )`

it looks like a perfectly good code snippet, what issues are you having here?

I get the following text in the console : If

``````array.length
``````

is even, pass an array with the two middle numbers from the

``````sorted
``````

array to the

``````getMean
``````

function. The first item in the array argument should be the value at index

``````array.length / 2
``````

from

``````sorted
``````

and the second should use the value at the index

``````array.length / 2 - 1
``````

from

``````sorted
``````

. If the

``````array.length
``````

is odd, your

``````median
``````

variable should assign the middle number to the

``````median
``````

variable. The middle number is the value of

``````sorted
``````

at

``````Math.floor(array.length / 2)
``````

i still dont understand what im doing wrong

you don’t have a `getMean` function as requested. Can you give the link to the step? It’s quite difficult to know what’s going on without that

I think there is two topics with the same issue,

the original one is here: Topic

I have merged your three topics for this step, please open only one topic for a step

i dont quite understand what you mean, please clarify

### Tell us what’s happening:

im sstill having an issue on this step, please assist

### Your code so far

``````const median = array.length % 2 === 0
? getMean(sorted[array.length / 2], sorted[array.length / 2 - 1]) : sorted[Math.floor(array.length / 2)] ;

``````
``````<!-- file: index.html -->
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="./styles.css" />
<script src="./script.js"></script>
<title>Statistics Calculator</title>
<body>
<h1>Statistics Calculator</h1>
<p>Enter a list of comma-separated numbers.</p>
<form onsubmit="calculate(); return false;">
<label for="numbers">Numbers:</label>
<input type="text" name="numbers" id="numbers" />
<button type="submit">Calculate</button>
</form>
<div class="results">
<p>
The <dfn>mean</dfn> of a list of numbers is the average, calculated by
taking the sum of all numbers and dividing that by the count of numbers.
</p>
<p class="bold">Mean: <span id="mean"></span></p>
<p>
The <dfn>median</dfn> of a list of numbers is the number that appears in
the middle of the list, when sorted from least to greatest.
</p>
<p class="bold">Median: <span id="median"></span></p>
<p>
The <dfn>mode</dfn> of a list of numbers is the number that appears most
often in the list.
</p>
<p class="bold">Mode: <span id="mode"></span></p>
<p>
The <dfn>range</dfn> of a list of numbers is the difference between the
largest and smallest numbers in the list.
</p>
<p class="bold">Range: <span id="range"></span></p>
<p>
The <dfn>variance</dfn> of a list of numbers measures how far the values
are from the mean, on average.
</p>
<p class="bold">Variance: <span id="variance"></span></p>
<p>
The <dfn>standard deviation</dfn> of a list of numbers is the square
root of the variance.
</p>
<p class="bold">
Standard Deviation: <span id="standardDeviation"></span>
</p>
</div>
</body>
</html>
``````
``````/* file: styles.css */
body {
margin: 0;
background-color: rgb(27, 27, 50);
text-align: center;
color: #fff;
}

button {
cursor: pointer;
background-color: rgb(59, 59, 79);
border: 3px solid white;
color: white;
}

input {
background-color: rgb(10, 10, 35);
color: white;
border: 1px solid rgb(59, 59, 79);
}

.bold {
font-weight: bold;
}
``````
``````/* file: script.js */
const getMean = (array) => array.reduce((acc, el) => acc + el, 0) / array.length;

// User Editable Region

const getMedian = (array) => {
const sorted = array.sort((a, b) => a - b);
const median = array.length % 2 === 0
? getMean(sorted[array.length / 2], sorted[array.length / 2 - 1]) : sorted[Math.floor(array.length / 2)] ;
}

// User Editable Region

const calculate = () => {
const value = document.querySelector("#numbers").value;
const array = value.split(/,\s*/g);
const numbers = array.map(el => Number(el)).filter(el => !isNaN(el));

const mean = getMean(numbers);

document.querySelector("#mean").textContent = mean;
}
``````

### Your browser information:

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36`

### Challenge Information:

Learn Advanced Array Methods by Building a Statistics Calculator - Step 22

`getMean` function takes an array as an argument, but here you just pass two parameters to it.

So enclose all of this

inside square brackets `[]`.

do not create multiple topics to ask for help with a single step, you had 3 topics for this step 22, please create only 1