Вопрос №66972 от пользователя Max Pryadko в уроке «Отрисовка (рендеринг) состояния», курс «JS: Архитектура фронтенда»

Max Pryadko

Вопрос по решению учителя: откуда взялось filterName в 21-й строчке? Во всём коде оно появляется через пару строк ещё 1 раз. Не понимаю, что это, откуда это и почему. По отладке вижу, что это select'ы и input'ы.

И что происходит в 25-й строчке? Понятное дело, что сравнение, но как это работает?

3 0

Nikolai Gagarinov

Макс, добрый день.

Здесь в решении учителя используется деструктуризация массива. С помощью квадратных скобок аргумент раскладывается на два

[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);

Где тоже используется деструктуризация, но опускается первое значение.

0

Max Pryadko

Nikolai Gagarinov, так а что происходит в 25-й строчке? Деструктуризация тут понятна и видна, всё верно :)

return match(filterValue)(itemProperty);

0

Nikolai Gagarinov

Чтобы ответить на этот вопрос, нам нужно вернуться на несколько курсов назад и вспомнить, как функции могут вызывать другие функции =)

Собственно здесь так и есть - посмотрите на predicates

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
7 июля 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
7 июля 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
7 июля 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
7 июля 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
7 июля 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
7 июля 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
7 июля 5 месяцев