forEach模仿.map()函数

Nau*_*wir 0 javascript arrays foreach

我试图模仿array.map()使用forEach().

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]
Run Code Online (Sandbox Code Playgroud)

所以,我有这个numbers数组的值,我有自己map function的迭代数组,然后我推动空数组中的值empMap

之后,我调用这个map函数并将每个值乘以2并将其打印出来.

我应该得到双倍的输出为[2,4,6]而不是[1,2,3].不知道我哪里错了.

这是同样的[codepen] 1.

Nik*_*des 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]
Run Code Online (Sandbox Code Playgroud)