Вопрос №66972 от пользователя Max Pryadko в уроке «Отрисовка (рендеринг) состояния», курс «JS: Архитектура фронтенда»
Вопрос по решению учителя: откуда взялось filterName в 21-й строчке? Во всём коде оно появляется через пару строк ещё 1 раз. Не понимаю, что это, откуда это и почему. По отладке вижу, что это select'ы и input'ы.
И что происходит в 25-й строчке? Понятное дело, что сравнение, но как это работает?
Макс, добрый день.
Здесь в решении учителя используется деструктуризация массива. С помощью квадратных скобок аргумент раскладывается на два
[filterName, filterValue]) => {
const [propertyName, predicate] = filterName.split('_');
const match = predicates[predicate];
const itemProperty = item[propertyName];
return match(filterValue)(itemProperty);
})
Обратите внимание, что на 20 строке объект query
раскладывается на записи с помощью Object.entries
Object.entries(query).filter(([, filterValue]) => filterValue !== null);
Где тоже используется деструктуризация, но опускается первое значение.
Nikolai Gagarinov, так а что происходит в 25-й строчке? Деструктуризация тут понятна и видна, всё верно :)
return match(filterValue)(itemProperty);
Чтобы ответить на этот вопрос, нам нужно вернуться на несколько курсов назад и вспомнить, как функции могут вызывать другие функции =)
Собственно здесь так и есть - посмотрите на predicates
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







