Включено в курс
Чему вы научитесь
- Строить сложные структуры данных на базе более простых
- Проектировать функции так чтобы их можно было легко соединять друг с другом
- Обрабатывать коллекции представленные списками с помощью функций высшего порядка (map/filter/reduce)
- Разделять код на уровни, выстраивая правильное взаимодействие между слоями
Описание
На этом курсе вы продолжите изучать составные данные на более продвинутом уровне и рассмотрите тип данных «список». Вы узнаете больше о функциях высшего порядка filter, map и reduce и иерархических структурах. В итоге вы научитесь строить сложные структуры данных на базе более простых и проектировать функции так, чтобы их можно было легко соединять друг с другом. Составные данные пригодятся, если вы решите работать над проектами, которые требуют обработку сложных структур данных. Знания из этого курса помогают программистам обрабатывать коллекции, представленные списками с помощью функций высшего порядка.
Чтобы учиться было проще, стоит заранее пройти курс JS: Основы.
Программа курса
-
2
Представление последовательностей
Вспоминаем пары (pairs) и рассматриваем представление списков с помощью пар -
4
Отображение списков
Рассматриваем функцию map и способ отображения списков -
7
Стандартные интерфейсы
Разбираемся в преимуществах хорошей абстракции и выясняем, как писать код так, чтобы его было легче комбинировать -
8
Иерархические структуры
Переходим к построению иерархических структур с помощью пар -
9
Уровневое проектирование
Знакомимся с уровневым проектированием на примере нашей реализации библиотеки для работы с HTMLтесты
-
10
Дополнительные материалы
Статьи и видео, подобранные командой Хекслета. Помогут глубже погрузиться в тему курса
Формат обучения
Испытания
Это практические задания, которые мы советуем выполнить после завершения курса. Задания помогут вам получить дополнительный опыт в программировании и закрепить полученные навыки. Обычно мы рекомендуем выполнить 3-5 испытаний. Но если не получается, не отчаивайтесь. Просто вернитесь к ним позже
Отзывы
Доброго времени суток. Решил добавить немного рефлексии в топик.
Я выполнил это задание. Сам. Ну, как минимум, первые две функции, concat пришлось вычитывать из обсуждений, ибо в целом принцип работы был понятен сразу, но вот нюансы... Я уже хотел бросить попытки самому реализовать задание, но взял последний шанс и эврика случилась, пазл сложился.
Совет тем, кто только приступает: не отступайте при первых сложностях, позорьтесь до конца )))
Хотелось бы, конечно, услышать мнение преподавателей, но по моим личным ощущениям задание сложное (и это хорошо!). Тут сразу много проблем : и то, что нужно работать с библиотекой пар, и то, что нужно исполнять задачи рекурсивно, и то, что даже рекурсия иногда может работать не так, как ты привык, чтобы она работала (это опять про concat, если что). Но, действительно, выполнив даже это первое задание начинаешь немного иначе видеть код и то как с ним работать, получаешь в частности, возможность проработать рекурсивные вызовы, чего в предыдущих курса было откровенно мало. Спасибо команде Хекслета за это ;)
АААААА просто жесть!) Несколько дней сидела по несколько часов. Ночами во снах видела окошко Хекслета и не проходящие тесты. Километры обсуждений, стопки исписанных листов. Хотелось все бросить и посмотреть решение учителя. В конечном итоге, третья функция решена. Последней каплей в моем понимании стало написание всех свойств функции, которыми она должна обладать (какой параметр должен браться, куда записываться, как взять поэлементно, расписать рекурсивно некий образ вызова всех элементов и т.д.). Когда увидела три галочки в тестах, даже как-то не отлегло, какой-то осадок остался в душе)) Будто не я сама это решила, а кто-то за меня написал. Но так оно и есть) Коллективно из обсуждений родилось решение. СПАСИБО ВСЕМ!
Удивился, как быстро удалось написать emptyTagsCount
. Буквально одной левой передал тип элемента в функцию для reduce
. Каррирование и "функции, возвращающие функции" даром не прошли. Тот момент, когда уже научился ездить на велосипеде, но сам еще не можешь в это поверить :)
Да,надо отметить,что мозги горят. решил обе функции сам,но первую с помощью внутренней итеративной функции. поглядел решение учителя и переписал без подсматриваний на аналогичное. т.е. понимание есть!<br> что касается emptyTagsCount,то пришлось подключить filter из прошлого урока,отфильтровать сначала все элементы типа,потом из них итеративно выбрать элементы с нулевым содежанием value. а все потому,что не смог правильно описать условие,как у учителя. в общем буду сейчас дальше биться,чтобы дописать до его варианта. только так понимание и приходит! спасибо за уроки,они отличные!