首页 > 解决方案 > 从高阶函数返回数组

问题描述

function map(arr, fn){
for(var i = 0; i <arr.length; i++){
    fn(arr[i]);
    //some code here
    }
}

map([1,2,3,4], function(val){
    return console.log(val * 2);
});

我在尝试将结果转换为数组形式时遇到了麻烦。例如,[2,4,6,8]。我觉得我知道该怎么做,但我正在空白。

标签: javascriptarraysreturnhigher-order-functions

解决方案


回调 ( fn) 应该改变手头的数组值并map返回该数组。见片段。此外:只需使用Array.map我所说的本机方法(请参阅 mdn

function map(arr, fn){
  for(var i = 0; i <arr.length; i++){
    arr[i] = fn(arr[i]);
  }
  return arr;
}

console.log(
  map([1,2,3,4], function(val){  return val*2; })
);

// but hey, who needs it
console.log([1,2,3,4].map(v => v*2));


推荐阅读