Привет, друзья!

После проекта, вернуля к начатому курсу JS:Последовательности и решил пройти все с начала, чтобы в голове лучше улеглось. Все шло ровно до встречи с деревом :) На задаче где нужно было обойти дерево и отобрать все элементы по заданному параметру, я сильно подзавис. Одна маленькая ошибка породила кучу ложных путей, на отработку которых ушла уйма времени. я даже взял паузу на один день и занимался другими делами, не возвращаясь к этой задаче. В итоге решение получилось похожим на учительское, но совсем не лаконичным. Думаю все придет с опытом, чем больше прорешанных задач, тем лучше и чище становится код. Ключевым моментом тормозящим решение задач, была моя невнимательность. По началу забытый return сильно в ступор вгонял: “Как же так!?? в console.log верный результат, но программа не работает!!!”. Я даже хотел себе уже табличку повесить “Проверь return!!!”. Несколько раз попадался на том, что не тот результат ждал от данных учителем функций, приходилось ковырять исходники на гитхабе.

Самым интересным стало задание Выбор по селектору. Реализуйте и экспортируйте по умолчанию функцию select, которая возвращает список нод в соответствии с запросом. Запрос это список из имен тегов, в котором каждый следующий тег это тег, вложенный в предыдущий. Возникла идея сделать по быстрому, используя select для одного элемента из прошлого задания и им рекурсивно отобрать по каждому тегу из списка. По быстрому не получилось, тот select возвращал с искомыми тегами, а мне нужен был список без них во всех случаях кроме последнего. Пришлось дописать дополнительную фунцию unTag, которая отбросит верхние теги из результата. Потом вылезла новая проблема, моя программа пропускала варианты в которых между искомыми тегами вклинивался какой-то левый тег. Добавил в unTag еще одну проверку, которая отсеивала эти варианты. Мое решение тут буду рад если покритикуете или захотите обсудить его.

Пишите, до скорых встреч!