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

### Tell us what’s happening:

I find the instructions confusing. The instructions say to pass in declaring a set into the if condition, but I’m having trouble with it.

``````<!-- file: index.html -->
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<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;

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)];
return median;
}

// User Editable Region

const getMode = (array) => {
const counts = {};
array.forEach(el => counts[el] = (counts[el] || 0) + 1);
let countSet = new Set(Object.values(counts));
if (countSet.size === 1) {
return null;
}
}

// 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);
const median = getMedian(numbers);

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

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

### Challenge Information:

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

Start by creating an `if` statement. In the condition, create a `Set` with `new Set()` and pass it the `Object.values()` of your `counts` object.

and the feedback provided using your code is,

Your `if` statement should create a new `Set` and pass the `Object.values()` of your `counts` object.

So try to do it without declaring a new variable for the Set.

Here’s my code on doing it without creating a new set:

``````const getMode = (array) => {
const counts = {};
array.forEach(el => counts[el] = (counts[el] || 0) + 1);
if (Object.values(counts).size === 1) {
return null;
}
}
``````

You need to instantiate a new Set the way you did before, but do not assign it to a newly declared variable, instead do so directly inside the `if` block

Your `if` statement should create a new `Set`

Here’s the edited if statement:

``````  if (Object.values(counts).size === 1) {
Set = new Set(Object.values(counts));
return null;
}
``````

I seem to have trouble with what goes in the condition of the if statement.

These are the instructions for the condition:

In the condition, create a `Set` with `new Set()` and pass it the `Object.values()` of your `counts` object.

It doesn’t look like you are following this

Does it mean if (Set = new Set(Objects.values(counts))? It might be that.

there is no mention of assignment. Also you should never assign to `Set`, you break things

It finally worked. I finally got it.

1 Like

Thanks for the encouragement. I surely can do it.

1 Like

It is great that you solved the challenge, but instead of posting your full working solution, it is best to stay focused on answering the original poster’s question(s) and help guide them with hints and suggestions to solve their own issues with the challenge.

We are trying to cut back on the number of spoiler solutions found on the forum and instead focus on helping other campers with their questions and definitely not posting full working solutions.

1 Like

Sorry for my inappropriate post…

@ilenia
I struggled with this solution and managed to get the correct and posted the almost correct answer out of sheer joy.

I will take care to be able to post hints, from then on.