Не понимаю связь между двумя функциями
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 как параметр и возвращает функцию, которая может быть использована в качестве фильтра для элементов массива. |
9karamba,
function MakeMultiFilter(originalArray){
return function(fn) {
var temp = [];
for (var i=0; i<originalArray.length; i++) {
//....
}
return temp
}
}
|
:write:
<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>
|
| Часовой пояс GMT +3, время: 22:04. |