【问题标题】:Javascript, on a map function I wrote, very shortJavascript,在我写的地图函数上,很短
【发布时间】:2017-02-04 01:55:47
【问题描述】:

我试图让我的函数映射应用于数组的每个元素,然后返回新数组。谁能告诉我为什么这不起作用?

function addTwo(num)
{
 return num+2;
}

function map(array, callback)
{ 
  var new=[];
   for(var i=0;i<arr.length;i++)
   {
     new.push(callback(array[i]));
   }  
}
var arr=[2,4,6,8];              
console.log(map(arr, addTwo));

【问题讨论】:

  • 您在控制台中看到错误了吗?问题 1 - new 是保留关键字 - 问题 2 - 您没有使用内置数组方法来简化工作,问题 3 - 您的 map 函数创建一个数组,将内容推送给它,然后什么也不做,你说你想返回新数组,但你的函数没有返回任何东西......不言自明的问题就在那里
  • 下次,请描述您遇到的问题,而不是仅仅说它不起作用。
  • 扔掉function map,你会看到console.log(arr.map(addTwo))会做你想做的事
  • 谢谢,问题是 new 被保留了。我如何将您标记为已回答问题@JaromandaX
  • 不,有 两个 问题 - 您的地图函数没有返回任何内容 - 添加了答案 -

标签: javascript arrays callback


【解决方案1】:

我想你需要知道你哪里出错了,所以,这是你的代码重写了指出的两个错误 - new 是保留关键字,你不能有一个名为 new 的变量 - 你说你想要你的 map 函数返回一些东西,所以,你应该 return 一些东西!

function addTwo(num) {
    return num+2;
}

function map(array, callback) { 
    var ret=[]; // use a non-reserved name for the array
    for(var i=0; i<arr.length; i++) {
        ret.push(callback(array[i]));
    }
    return ret; // if you want to return it, then return it
}
var arr=[2,4,6,8];              
console.log(map(arr, addTwo));

【讨论】:

    【解决方案2】:

    像这样使用内置的Array.prototype.map:

    function addTwo(num) {
        return num + 2;
    }
    
    
    var array = [1, 7, 5, 4];
    
    console.log(array.map(addTwo));

    注意:您的整个代码代码在一行中完成(像这样使用arrow functions:

    var array = [1, 7, 5, 4];
    
    var newArray = array.map(n => n + 2);
    
    console.log(newArray);

    【讨论】:

      猜你喜欢
      • 2011-10-11
      • 2018-03-17
      • 2017-05-03
      • 1970-01-01
      • 2018-08-12
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多