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

Tell us what’s happening:

I can’t figure out what I’m doing wrong here. Please help

Your code so far

<!-- file: index.html -->
<!DOCTYPE html>
<html lang="en">
  <head>
    <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>
  </head>
  <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 testArr1 = [1, 2, 3, 4, 5];
const testArr2 = [1, 2, 3, 4, 5, 6];
const isEven = testArr2.length % 2 === 0;
console.log(isEven);
const oddListMedian = testArr1[Math.floor(testArr1.length / 2)];
console.log(oddListMedian);
const evenListMedian = testArr2[Math.floor(testArr2.length / 2)];
console.log(evenListMedian);


// User Editable Region

const getMedian = (array) => {
  const sorted = array.sort((a, b) => a - b);
}

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/130.0.0.0 Safari/537.36

Challenge Information:

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

if the list has an even number of numbers you need to find the median using the mean

ok thanks could you expand on that more? do i have to use % === method at all?

what method is that?

the method used in the above line for the const isEven = testArr2.length % 2 === 0 to find if the length is odd or even?

You don’t need to, with evenListMedian you are calculating the median of testArr2, which you know has an even number of elements.

That will come later, now you just need to calculate the median for this list. As it has an even number of elements you need to take the two middle numbers and calculate their mean, that’s why you need to use getMean. You can see an example of that in the example code in the instructions

ok thanks, this is what i have now, is this closer?

const evenListMedian = testArr2[Math.floor(testArr2.length / 2),(testArr2.length / 2 - 1)];

console.log(getMean(oddListMedian, evenListMedian))

You are not using getMean, also you can’t get two elements from an array like that

how would i use the getMean? can you show/help me how to write this out? been stuck for awhile now

you need to pass to getMean an array that contains the two middle numbers of the evenListMedian array

ok thanks, something more like this?

const evenListMedian = getMean(testArr2[Math.floor(testArr2.length / 2)], testArr2[Math.floor(testArr2.length / 2) - 1])

console.log(evenListMedian)

Yes, something like that. As the number of elements is even you don’t need to use Math.floor. Also, you need to have an array as argument of getMean, right now it’s just two numbers

is this any closer?

const evenListMedian = getMean[(testArr2.length / 2), (testArr2.length / 2) - 1)]

console.log(evenListMedian)

Hi @otoya1one

You have a message in the console.

SyntaxError: unknown: Unexpected token, expected “]” (9:79)
7 | const oddListMedian = testArr1[Math.floor(testArr1.length / 2)];
8 | console.log(oddListMedian); >
9 | const evenListMedian = getMean[(testArr2.length / 2), (testArr2.length / 2) - 1)] | ^
10 |
11 | console.log(evenListMedian); 12 | const getMedian = (array) => {

Then take a look at the example code, and compare it to your code.

Happy coding

ok thanks, do you mean i have a message in my inbox? or in the console.log code?
and the code below is the example code?

The console is the one on the right

Or you can also open the browser console with F12

The Example Code is the code in the instructions. there is written Example Code above it

is this any closer? been stuck on this for awhile, could you as best as possible explain how to get the answer?

const evenListMedian = getMean(testArr2[testArr2.length / 2], testArr2[(testArr2.length / 2) - 1]);

console.log(evenListMedian);

now you are passing two numbers to getMean, it needs to be an array. You should still have the round parenthesis tho.

you can follow the example code, and do what it does there

ive tried to follow the example, and still stuck. could you explain the whole problem and how to solve it? i have no idea how to pass this

do you understand the different between passing two numbers to a function and an array with two numbers?