forEach模仿.map()函数

时间:2019-01-30 13:50:13

标签: javascript arrays foreach

我正在尝试使用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

1 个答案:

答案 0 :(得分:5)

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

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]