代码之家  ›  专栏  ›  技术社区  ›  Nauman Tanwir

foreach to mimic.map()函数

  •  0
  • Nauman Tanwir  · 技术社区  · 5 年前

    我想模仿 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]
    

    所以,我有这个 numbers 数组中有值,我有自己的 map function 循环遍历数组,然后在空数组中推送值 empMap

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

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

    这就是 [codepen] 1 同样。

    1 回复  |  直到 5 年前
        1
  •  5
  •   nicholaswmin    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]