Learn Functional Programming by Building a Spreadsheet - Step 25

Tell us what’s happening:

I already used the return keyword but still says I need to use it

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" />
    <title>Functional Programming Spreadsheet</title>
  </head>
  <body>
    <div id="container">
      <div></div>
    </div>
    <script src="./script.js"></script>
  </body>
</html>
/* file: styles.css */
#container {
  display: grid;
  grid-template-columns: 50px repeat(10, 200px);
  grid-template-rows: repeat(11, 30px);
}

.label {
  background-color: lightgray;
  text-align: center;
  vertical-align: middle;
  line-height: 30px;
}
/* file: script.js */
const isEven = num => num % 2 === 0;
const sum = nums => nums.reduce((acc, el) => acc + el, 0);
const average = nums => sum(nums) / nums.length;


// User Editable Region

const median = nums => {
  const sorted = nums.slice().sort((a, b) => a - b);
  const length = sorted.length;
  const middle = Math.floor(length / 2 - 1);
   return isEven(length) ? (nums[middle] + nums[middle + 1]) / 2 : nums[middle];
};


// User Editable Region


const range = (start, end) => Array(end - start + 1).fill(start).map((element, index) => element + index);
const charRange = (start, end) => range(start.charCodeAt(0), end.charCodeAt(0)).map(code => String.fromCharCode(code));

window.onload = () => {
  const container = document.getElementById("container");
  const createLabel = (name) => {
    const label = document.createElement("div");
    label.className = "label";
    label.textContent = name;
    container.appendChild(label);
  }
  const letters = charRange("A", "J");
  letters.forEach(createLabel);
  range(1, 99).forEach(number => {
    createLabel(number);
    letters.forEach(letter => {
      const input = document.createElement("input");
      input.type = "text";
      input.id = letter + number;
      input.ariaLabel = letter + number;
      container.appendChild(input);
    })
  })
}

Your browser information:

User Agent is: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36

Challenge Information:

Learn Functional Programming by Building a Spreadsheet - Step 25

1 Like

Hello,

Your answer is not 100% compatible with the instructions,

  • First, you should be using the sorted variable instead of nums since that will give a more accurate result
  • remove the Math.floor function in the assignment of the middle variable since that is what is causing your error, revert it back to how it was at the beginning of the step
  • If you hit submit after this corrections, you will have a new error message stating that you did not use the average function if the value of the test in the ternary operator is truthy which is normal since you are manually doing what the average function does, call it & pass the array [sorted[middle], sorted[middle + 1]]
  • As for the second part of the ternary operator, it is sorted[Math.ceil(middle)] , use Math.ceil not Math.floor
2 Likes

Thank you for the reply, it worked

1 Like

It worked Thank’s @constantcode9909

1 Like