函数编程:在PrototypePassed JavaScript上实现Map

92dk7w1h  于 2023-03-16  发布在  Java
关注(0)|答案(2)|浏览(133)

我正在做FreeCodeCamp的练习,我不明白其中的逻辑和代码。

// the global Array
var s = [23, 65, 98, 5];

Array.prototype.myMap = function(callback) {
  var newArray = [];
  // Add your code below this line
  this.forEach(a => newArray.push(callback(a)));
  // Add your code above this line
  return newArray;
};

var new_s = s.myMap(function(item) {
  return item * 2;
});

有谁能帮我解释一下吗?谢谢!

z9smfwbn

z9smfwbn1#

此代码将向new_s输出一个包含s x 2的值的数组
让我们回顾一下:

Array.prototype.myMap = function(callback) { ... }
  • myMap是适用于数组(Array.prototype)的函数
  • 这个函数有一个名为callback的参数。这个参数将是一个函数(即使在这里你仍然只能从参数的名称猜测;)
var newArray = [];
  // Add your code below this line
  this.forEach(a => newArray.push(callback(a)));
  // Add your code above this line
  return newArray;
  • 循环this(将应用myMap的数组)的所有值
  • callback引用的函数应用于每个值
  • callback函数的结果添加到newArray数组
  • 返回结果数组

最后:

var new_s = s.myMap(function(item) {
  return item * 2;
});
  • myMap函数应用于s,其中callback函数是将返回s的值2 * s的函数
3xiyfsfu

3xiyfsfu2#

你可以试试这个代码
数组.prototype.myMap =函数(回调){
常量新数组= [];
forEach((元素,索引,数组)=〉newArray.push(回调(元素,索引,数组))
返回newArray;
};

相关问题