从高阶函数返回数组

时间:2018-07-08 11:35:20

标签: javascript arrays return higher-order-functions

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]。我觉得我知道该怎么做,但我正在空白。

2 个答案:

答案 0 :(得分:2)

回调(fn)应该改变手头的数组值,而map应该返回数组。请参阅摘要。此外:只需使用我会说的本地Array.map方法(为此see 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));

答案 1 :(得分:0)

您的回调函数需要为数组中的每个项目返回一个新值,并且您需要为这些值创建一个新数组

function map(arr, fn){
   return arr.map(fn);
}

var res = map([1,2,3,4], function(val){
    return val * 2;
});

console.log(res)