И да, в этом случае вовсе не нужно имитировать иммутабельность, так как чаще всего аккумулятором выступает - если речь о сложных типах - объект/массив, который мы создаём внутри функции. А значит мы не можем как-либо навредить внешнему коду.
Такой подход для reduce - отличное место для утечек памяти на ровном месте, если данных будет немного побольше.
Здесь мы контролируемо мутируем объект чтобы избежать утечки памяти. Но ещё раз подчеркну, что этот объект создаётся внутри функции, а значит никаких сайд-эффектов при его мутации не случится.
PS: Отвечаю на ваш исходный вопрос - "Как это понять?". Если вы столкнулись с чем-то непонятным - разбивайте это непонятное на части. Так вы сможете отделить то, что вы знаете от того, что не знаете, и устранить белые пятна. В данном случае, я полагаю, это был rest/spread
Выложите своё решение в какой-нибудь песочнице, чтобы тем, кто готов вам помочь, было удобно посмотреть ваш код, и подсказать вам.
Учите js. Jquery не решит тех проблем, которые у вас есть.
"через jquery, у значение name должен быт равен value ключа" эту фразу
и всё сообщение в целом очень трудно читать, вы смешали описание задачи с предлагаемой реализацией.
Разбейте свою задачу на части и попробуйте решить её на js.
Ну, на самом деле, от 4 до 12 часов в день.
Плюс я пробовал выйти на фриланс тогда и делал маленькие глупые заказы, которые приносили больше опыта чем денег.
Любители стрелять себе в ногу могут пользоваться первым способом для выборки. Нормальные же люди пользуются первым способом когда программно надо пробежаться по потомкам/родителям и что-то найти.
"Прочитал" её года 4 назад. Многое было сложно и непонятно.
Сейчас прочитал не найдя почти ничего нового, кроме регулярок и ещё пары нюансов, но тем не менее.
Вы можете брать блок, если он вам даётся тяжело - пропускайте, идите к следующему, если с каждым разом всё сложнее - отложите книгу и вернитесь через 1-2-3 месяца программирования.
Или наоборот, дробите зубами гранит пока не поймёте один блок(параграф, главу, часть) книги, и идите дальше.
В принципе, по-моему, при самостоятельном обучении нет правил чтения проф. литературы.
Надо сказать, что всё сугубо индивидуально.
У меня есть два знакомых, а теперь уже и друга, которые доверили мне роль ментора над ними. В итоге оба уже работают. Не всё у них просто, не всё им понятно, но они упорны в достижении своих целей. Подруга вышла на работу где-то через полгода наших с ней занятий, друг через 4 что ли месяца. Пока тьфу-тьфу-тьфу.
Если вам интересно - могу и вам предложить свою кандидатуру в качестве ментора.
А в остальном все правы:
Изучать нужно огромные пласты информации, поэтому два месяца - капля в море. (но, как видно из текста выше - работу найти можно)
Работу искать нужно начинать уже сейчас. Просить тестовое. Стараться найти варианты, которые были бы интересны и вам, и работодателю, если последний выходит на подобный контакт.
Вам реально нужно ГОРЕТЬ желанием ковыряться в вебе. Это не просто чик-чик, тяп-ляп и в прод (хотя и такое бывает), и горы денег. (Как бы обидно это не звучало)
etc
Если собеседования проваливаются одно за другим - ни в коем случае не расстраиваться. Здесь важно понять, что вы не знаете. А ещё лучше - спросить, чем ваши знания не удовлетворили компанию, если компания и люди адекватные, они вам всё расскажут, и у вас появится блок для изучения.
Если ваше желание работать в этой сфере подкреплено упорностью в изучении и огромным интересом к самому процессу, то уверен, что у вас всё получится.
PS. Про менторство - это бесплатно. Если нужно - пишите в телеграм @YuraKostin
А какие проблемы вы хотите решать на jQuery, которые не можете решить на js?
Ангуляр я в коммерческой разработке не использовал, но уже полно статей о том, что он не тормозной, а о том, что его просто не умеют готовить. Я его просто не готовлю, так бы нашёлся, что сказать.
Если и брать фреймворк сейчас, то имхо Vue/React. Порог входа довольно низкий. Но только после уверенного овладения vanilla js.
По этой причине я решил декомпозировать свои хотелки-требования по отношению к себе. И прогресс на лицо - я не перестаю развиваться и делаю это почти каждый день. А меня это невероятно мотивирует.
Возможно скоро я буду как вы, но в таком случае, я буду надеяться на то, что у меня станет немного меньше требований к себе просто потому, что я успею изучить где-нибудь 70% того, что хочу.
Без максимализма нельзя. От себя нужно требовать.
Например, я никак не могу проникнуться функциональным программированием. Поэтому надеюсь, что в скором времени у меня появится, как ни странно, время попробовать язык, в котором можно писать только в функциональном стиле.
Как сказал Александр Соловьёв https://www.youtube.com/watch?v=R4sTvHXkToQ&t=5s примерная цитата "производят изменение в мозгу, которые делают программиста лучше".
Я вовсе не считаю, что мой субъективный взгляд - истина, однако лишних знаний не бывает. И мне не раз приходилось использовать grep, find, history, cat, less, echo и другие команды.
Каждый сам для себя решает, что ему нужно.
Я знаю и умею лишь часть того, что написал. Но стремлюсь к своему "идеалу". И указал я в конце-концов далеко не всё, что хотел бы уметь. Не как фронтендер, а как разработчик.
Конечно.
И везде я стараюсь писать адекватный семантичный код, так как вам наверняка будет проще разобраться именно в нём, чем в том, что по моему мнению могло бы заменить семантичные элементы.
Кхм.. Попробую по-другому.
React и Vue позволяют рендерить компоненты с примесью логики и хранения состояния. Это не отменяет того, что эти самые компоненты должны быть реализованы также адекватно, как если бы вы просто верстали сайт и добавляли сверху js логику.
Вообще, чем грамотнее и правильнее вы пишете код, тем проще его поддерживать. И это в первую очередь должно волновать вас и ваших коллег.
Честно говоря, я каждый раз, когда пытаюсь вспомнить, для чего я использовал call или apply - забываю все кейсы, кроме одного-двух.
В первую очередь удобно использовать apply для вызова какого-то метода, которые принимает конечное количество аргументов.
И я приводил этот пример: Math.max.apply(null, [1,2,3,4,5])
А прототипы.
Ну фишка в том, что важно понимать хотя бы отдалённо, как и что работает под капотом.
Вы вот, например, пилите на ангуляре.
А мы сейчас, пока что, пилим на чистом js.
Так вот я использовал классы, так как мне было нужно сделать абстрактный класс и два дочерних.
Но не будь сейчас ES6, я бы всё это напиливал через prototype.
Это как например, не понимать в школе, зачем нужна математика, а потом, став инженером, думать "Ах, что же это я, не учил математику, она мне так сейчас нужна чтобы понять это и это".
И да, в этом случае вовсе не нужно имитировать иммутабельность, так как чаще всего аккумулятором выступает - если речь о сложных типах - объект/массив, который мы создаём внутри функции. А значит мы не можем как-либо навредить внешнему коду.
Такой подход для reduce - отличное место для утечек памяти на ровном месте, если данных будет немного побольше.
Поэтому можно переписать функцию таким образом:
Здесь мы контролируемо мутируем объект чтобы избежать утечки памяти. Но ещё раз подчеркну, что этот объект создаётся внутри функции, а значит никаких сайд-эффектов при его мутации не случится.
PS: Отвечаю на ваш исходный вопрос - "Как это понять?". Если вы столкнулись с чем-то непонятным - разбивайте это непонятное на части. Так вы сможете отделить то, что вы знаете от того, что не знаете, и устранить белые пятна. В данном случае, я полагаю, это был rest/spread