我正在尝试使用forEach()模仿array.map()

var map = function () {
  var empMap = [];
  numbers.forEach(function (number) {
    empMap.push(number);
    console.log('empMap', empMap);
  });
  return(empMap);
}

var numbers = [1, 2, 3];
//implement this line

var doubles = map(numbers, function (number) {
  return number * 2;
});
console.log(doubles); // [2, 4, 6]


因此,我有一个带有值的numbers数组,我有自己的map function遍历该数组,然后将值推入一个空数组empMap

稍后,我将调用此map函数,并将每个值乘以2并打印出来。

我应该得到double的输出为[2,4,6],而不是[1,2,3]。不知道我要去哪里错。

这是相同的[codepen] 1

最佳答案

您需要将数组和回调作为参数传递,然后实际使用回调。



var map = function (array, callback) {
  var empMap = [];

  array.forEach(function (number) {
    empMap.push(callback(number))
  });

  return(empMap);
}

var numbers = [1, 2, 3];

var doubles = map(numbers, function (number) {
  return number * 2;
});

console.log(doubles); // [2, 4, 6]

09-13 13:08