Функциональное программирование: реализовать карту на PrototypePassed JavaScript - PullRequest
0 голосов
/ 30 апреля 2020

Я выполнял упражнение FreeCodeCamp, и у меня не было логики c и кода. Вот оно:

// 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;
});

Может ли кто-нибудь мне помочь и объяснить это? Спасибо!

1 Ответ

0 голосов
/ 30 апреля 2020

Этот код выведет в 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;
  • L oop через все значения this (массив, к которому вы будете применять myMap)
  • Применить функцию, на которую ссылается callback, к каждому значению
  • Добавить результат функции callback в массив newArray
  • Возвращает массив результатов

Наконец:

var new_s = s.myMap(function(item) {
  return item * 2;
});
  • Примените функцию myMap к s с функцией callback функция, которая будет возвращать значение s, 2 * s
...