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


<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>
Ответить с цитированием