Javascript在带有.map的数组方法中使用回调

时间:2019-03-21 18:04:59

标签: javascript arrays methods callback

我有此练习,需要帮助我了解我要去哪里。到目前为止,这是我的代码。

// 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 :(得分:0)

-您遇到此错误,因为您试图返回美元,并且主函数中不存在美元,这是无效的:

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

执行此操作:

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

但是您看不到美分,因为您没有在函数中声明它

答案 1 :(得分:0)

我认为您应该区分声明和调用函数。

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
}

答案 2 :(得分:0)

这是作者编写的首选代码。显然还有更多的“给猫皮的方法”。

  const dollars = cents.map(function(price){
return price/100;