Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.03.2018, 21:21
Новичок на форуме
Отправить личное сообщение для 9karamba Посмотреть профиль Найти все сообщения от 9karamba
 
Регистрация: 15.03.2018
Сообщений: 1

Не понимаю связь между двумя функциями
function MakeMultiFilter(originalArray){
//я еще не написала
}

// вызов MakeMultiFilter() with originalArray = [1,2,3] возвращает функцию, сохраненную в переменную arrayFilterer1,
//that can be used to repeatedly filter the input array 
var arrayFilterer1 = MakeMultiFilter([1,2,3]); 

// вызов arrayFilterer1 (с callback функцией) чтобы отфильтровать все числа не равные 2
arrayFilterer1(function (elem) {
return elem !== 2; // check if element is not equal to 2
}, function (currentArray) {
console.log(this); // 'this' должно выводить originalArray который [1,2,3]
console.log(currentArray); // prints [1, 3]
});


Мне нужно написать функцию MakeMultiFilter, но я не понимаю связи arrayFilterer1 и MakeMultiFilter. arrayFilterer1 сначала приравнивается к MakeMultiFilter, а затем мы вызываем arrayFilterer1 с помощью 2 параметров-функций - как это вообще? Не понимаю эту связь, объясните мне кто нибудь.

В задании написано: Определите глобальную функцию MakeMultiFilter, которая принимает на вход массив originalArray как параметр и возвращает функцию, которая может быть использована в качестве фильтра для элементов массива.
Ответить с цитированием
  #2 (permalink)  
Старый 15.03.2018, 21:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

9karamba,
function MakeMultiFilter(originalArray){
  return function(fn) {
      var temp = [];
      for (var i=0; i<originalArray.length; i++)  {
        //....
      }
      return temp
}

}
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2018, 13:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075


<script>
function MakeMultiFilter(originalArray) {
  return function(fun, callback) {
    var currentArray = [];
    for (var i = 0; i < originalArray.length; i++) {
      var val = originalArray[i];
      if (fun(val)) {
        currentArray.push(val);
      }
    }
    if (callback) {
      callback.call(originalArray, currentArray);
    }
    return currentArray;
  };
}

// вызов MakeMultiFilter() with originalArray = [1,2,3] возвращает функцию, сохраненную в переменную arrayFilterer1,
//that can be used to repeatedly filter the input array
var arrayFilterer1 = MakeMultiFilter([1,2,3]);

// вызов arrayFilterer1 (с callback функцией) чтобы отфильтровать все числа не равные 2
arrayFilterer1(function (elem) {
return elem !== 2; // check if element is not equal to 2
}, function (currentArray) {
console.log(this); // 'this' должно выводить originalArray который [1,2,3]
console.log(currentArray); // prints [1, 3]
});

  </script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
синхронная связь (сообщения) между двумя IFRAMES? - JavaScript json123 Общие вопросы Javascript 1 23.02.2018 23:31
Связь между соседними компонентами tai Angular.js 4 17.10.2017 09:45
Количество отмеченный дней недели между двумя датами freenick jQuery 7 19.01.2016 00:25
Центрирование среднего блока между двумя float Siend (X)HTML/CSS 3 14.09.2015 14:08
Связь между двумя окнами. iMIhael Общие вопросы Javascript 2 28.11.2011 13:39