Javascript Использование обратного вызова в методе массива с .map - PullRequest
0 голосов
/ 21 марта 2019

У меня есть это упражнение, мне нужна помощь, чтобы понять, где я иду не так.Вот мой код.

// Exercise Two: In this exercise you will be given an array called 'cents'
// This array is a list of prices, but everything is in cents instead of dollars.
// Using the map method, divide every value by 100 and save it as a new array 'dollars'

function exerciseTwo(cents){ 

    function mapMethod(array, cb) { // created the map method
      let dollars = [];   // declaring the new array 'dollars'
        for (i=0; i < array.length; i++) { //iterating through the loop
          let updatedValue = cb(array[i] / 100); // dividing the iteration by 100
          dollars.push(updatedValue); //pushing the updated value to the new array 'dollars'
         }
          return dollars; 
    }
        // Please write your answer in the lines above.
          return dollars; // getting error that 'dollars' is not defined :(
}

Ответы [ 3 ]

0 голосов
/ 21 марта 2019

Я думаю, вы должны различать объявление и вызов функции.

function square(x) {
  return x*x;
} // <-- This is declare  

square(3) // <-- This is call

И то, что вы сделали в приведенном выше коде, это просто объявите функцию mapMethod внутри функции exerciseTwo, которая будет вызываться при выполнении теста системой. Но ваша mapMethod функция не будет вызвана, только определена.

Внутренняя функция может использовать переменные внешних функций, но не наоборот. Тогда вы не можете вернуть dollars, который объявлен во внутренней функции mapMethod(), из внешней функции exerciseTwo()

Следуйте требованию. Вам следует упростить код с помощью метода map .

function exerciseTwo(cents){
  const dollars = cents.map(cent => cent/100)
  return dollars
}
0 голосов
/ 22 марта 2019

Вот предпочтительный код, написанный автором.Очевидно, есть и другие «способы убрать кошку».

  const dollars = cents.map(function(price){
return price/100;
0 голосов
/ 21 марта 2019

-У вас есть эта ошибка, потому что вы пытаетесь вернуть доллары, а долларов не существует в вашей основной функции, это недопустимо:

let updatedValue = cb(array[i] / 100);

сделать это:

let updatedValue = cb(cents[i] / 100);

но вы не видите центов, потому что вы не объявляете это внутри функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...