Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.07.2019, 12:22
Интересующийся
Отправить личное сообщение для Кирилл Margheriti Посмотреть профиль Найти все сообщения от Кирилл Margheriti
 
Регистрация: 02.04.2019
Сообщений: 19

Замыкание (Фильтрация через функцию)
Есть задача https://learn.javascript.ru/task/fil...rough-function

Решение следующее
var arr = [1, 2, 3, 4, 5, 6, 7];

function filter(arr, func) {
    var newArr = arr.filter(func);
    return newArr;
}

function inBetween(a, b) {
    return function(number) {
        if (number >= a && number <= b) {
            return true;
        }
    };
}

function inArray(Array) {
    return function(number) {
        for (var i = 0; i < Array.length; i++) {
            if (number === Array[i]) {
                return true;
            }
        }
    }
}

alert(filter(arr, inBetween(3, 6)));
alert(filter(arr, inArray([1, 2, 5, 10, 3])));




Вопрос - откуда function(number) в функции inBetween() знает про текущий номер элемента в массиве при его переборе в функции function filter(arr, func) ?


Мы ведь не указываем function(number) в функции inBetween() его значение number, да?

Последний раз редактировалось Кирилл Margheriti, 11.07.2019 в 13:01.
Ответить с цитированием
  #2 (permalink)  
Старый 11.07.2019, 12:49
Интересующийся
Отправить личное сообщение для Кирилл Margheriti Посмотреть профиль Найти все сообщения от Кирилл Margheriti
 
Регистрация: 02.04.2019
Сообщений: 19

Вопрос - откуда function(number) в функции inBetween() знает про текущий номер элемента в массиве при его переборе в функции function filter(arr, func) ?


Мы ведь не указываем function(number) в функции inBetween() его значение number, да?
Ответить с цитированием
  #3 (permalink)  
Старый 11.07.2019, 12:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,310

Кирилл Margheriti,
код обработайте здесь, перед вставкой на форум
https://beautifier.io/
Ответить с цитированием
  #4 (permalink)  
Старый 11.07.2019, 12:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,310

Кирилл Margheriti,
аргументы передаёт встроенный метод массива строка 5 filter

Array.prototype.filter()
Ответить с цитированием
  #5 (permalink)  
Старый 11.07.2019, 13:07
Интересующийся
Отправить личное сообщение для Кирилл Margheriti Посмотреть профиль Найти все сообщения от Кирилл Margheriti
 
Регистрация: 02.04.2019
Сообщений: 19

Сообщение от рони Посмотреть сообщение
Кирилл Margheriti,
аргументы передаёт встроенный метод массива строка 5 filter

Array.prototype.filter()
Это я понял.
function inBetween(a, b) {
       return function(number) {
        if (number >= a && number <= b) {
            return true;
        }
    };
}

Но как эта функция получает number?


Получается что-то такое.
var newArr = arr.filter(inBetween(a, b));
И как с помощью замыкания он узнает про number?



Прошу прощения если что-то не правильно написал.

Последний раз редактировалось Кирилл Margheriti, 11.07.2019 в 13:09.
Ответить с цитированием
  #6 (permalink)  
Старый 11.07.2019, 13:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,310

Кирилл Margheriti,
строка 2 превращает inBetween в анонимную функцию.
var newArr = arr.filter(inBetween(a, b));
тоже что
var newArr = arr.filter(function(number) {
        if (number >= a && number <= b) {
            return true;
        }
    }
);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить функцию через условие Валерий1996 Общие вопросы Javascript 7 21.08.2015 11:44
Можно ли на функцию php повесить триггер и отследить выполнение через скрипт? ligisayan jQuery 1 26.06.2015 14:21
Глобальная переменная: не передается новое значение через функцию armidoll Общие вопросы Javascript 7 29.05.2015 21:54
Эмулировать список через селект Nanto Элементы интерфейса 2 06.03.2012 09:54
XMLHTTPRequest передача имя через POST dds AJAX и COMET 0 14.08.2008 13:44