• Почему async/await в Array.prototype.map работает как-то не предсказуемо(для меня)?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Такое ощущение будто в .map асинхронная функция не дожидается своих await, а сразу возвращает промис.

    Так точно. Функция, переданная в map, вызывается без всяких await'ов.

    Хотите массив со своими удвоенными значениями - используйте Promise.all:

    const arr = await Promise.all([1, 2, 3, 4, 5].map(async (value) => 2 * await asyncThing(value)));
    
    console.log(arr); // [2, 4, 6, 8, 10]
    Ответ написан
    1 комментарий
  • Актуальные книги по js?

    aRegius
    @aRegius
    Python Enthusiast
    Вся актуальная литература есть только на Amazon. Вот, например, книги по JavaScript тематике, отсортированные по дате выхода (с учетом планируемых).

    Также, на заметку, издательство O’Reilly предлагает в открытом доступе ряд материалов для изучения, а издательство Packt раз в сутки выкладывает для бесплатного доступа рандомные книги - можно мониторить на предмет актуальности исходя из личных потребностей.

    Крайне редко вы встретите актуальный русскоязычный аналог, да еще с толковым переводом. Поэтому, я бы делал ставку на английский - это ваша дополнительная степень свободы относительно доступа к самой новой и качественной информации на рынке.
    Ответ написан
    1 комментарий
  • Как сделать так чтобы в массиве не было одинаковых элементов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Делаем нормально: [...new Set(arr)].

    И ненормально:

    Object.values(arr.reduce((acc, n) => (acc[n] = n, acc), {}))
    
    // или
    
    Array.from(new Map(arr.map(n => [ n, n ])).values())
    
    // или
    
    arr.filter(function(n) {
      return !(this[n] = this.hasOwnProperty(n));
    }, {})
    
    // или
    
    arr.filter(((picked, n) => !picked.set(n, picked.has(n)).get(n)).bind(null, new Map))
    
    // или
    
    arr.filter((n, i, a) => i === a.indexOf(n))
    
    // или
    
    arr.reduce((acc, n) => (acc.includes(n) || acc.push(n), acc), [])
    Ответ написан
    2 комментария
  • Как сделать функцию, которая выполнится только один раз?

    0xD34F
    @0xD34F Куратор тега JavaScript
    function one() {
      console.log('AAAAAAAAAA');
      one = () => {};
    }

    Ну или можно как декоратор это дело оформить:

    function once(f) {
      let called = false;
      return function() {
        if (!called) {
          called = true;
          return f.apply(this, arguments);
        }
      };
    }
    
    const one = once(function() {
      console.log('AAAAAAAAAA');
    });
    Ответ написан
    Комментировать
  • Как создать массив из объекта?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const arr = Object.entries(obj).map(([ k, v ]) => ({ id: +k, name: v.nameEn }));
    Ответ написан
    Комментировать
  • Что значит данная конструкция (function () {})()?

    @dsmaslov
    Создаётся анонимная функция, после её объявления она вызывается.
    Ответ написан
    7 комментариев
  • Что почитать для прокачивания навыков проектирования приложений?

    aleksand44
    @aleksand44
    Ну и обычно в таких случаях советуется "Стив Макконнелл - Совершенный код."
    Ответ написан
    Комментировать
  • Что почитать для прокачивания навыков проектирования приложений?

    rockon404
    @rockon404
    Frontend Developer
    Достаточно поработать в проектах с хорошей архитектурой.
    С нуля писать не надо, используйте фреймворки. Приложения на фреймворках отлично поддерживаются, рефакторятся и масштабируются.
    Почитайте о MVC, SOLID, паттернах проектирования.
    Ответ написан
    Комментировать
  • Почему не работает создание объекта?

    0xD34F
    @0xD34F
    Почему не работает - вам написали, синтаксическая ошибка.

    Возьмите ваш action.title в кавычки, либо в квадратные скобки - в зависимости от того, что вам нужно. В первом случае именем свойства будет "action.title", во втором - значение action.title.

    Кстати, а что нужно? Очевидно, второй вариант - значение action.title должно стать ключом, но что дальше? Ведь получится, что ключ и значение свойства вложенного объекта совпадают, а больше в этом вложенном объекте ничего и нет. Будет ли он дополняться в будущем чем-то ещё? Если нет, было бы логичнее складывать эти title'ы в массив вместо создания отдельного объекта под каждый. Если да, то в случае, если объект с указанным title'ом уже существует, его свойства будут потеряны. Так и задумано? Если нет, то их надо копировать:

    return {
      ...state,
      [action.title]: {
        ...state[action.title],
        title: action.title,
      },
    };
    Ответ написан
    Комментировать
  • Каким образом более правильно именовать переменные?

    mashletov
    @mashletov
    Math.random()
    Второе: productList, orderList, userList
    Или же: products, orders, users

    Вообще, это не относится к программированию — насколько я знаю, по-английски правильно item list, но list of items.
    Ответ написан
    11 комментариев
  • Где обучаться front-end?

    FreeMan94
    @FreeMan94
    Frontend developer
    В HTML Academy стоит учиться верстке, а js лучше изучать на hexlet и learn.javascript.ru
    Практиковаться рекомендую на codewars.
    Ответ написан
    Комментировать
  • C чего начать изучение JavaScript опытному верстальщику?

    @s-jet
    В первую очередь нужно хорошо понимать JS, именно не выучить, а понимать. Область видимости, наследование, контекст, замыкания. Типы данных, как с ними работать. Потом разобраться с ES6. https://learn.javascript.ru/ в этом плане как оглавление, дальше по всему интернету искать статьи и видеокурсы на ютубе, главное брать и самому делать примеры из статей без подсказок и только потом смотреть готовое решение и сравнивать. Консолить, консолить и консолить. Дальше, когда разберетесь с чистым JS, учить уже фреймворки React, Angular, Vue
    Ответ написан
    Комментировать
  • Как отлаживать javascript для ipad/iphone?

    crazy_leo
    @crazy_leo
    Frontend Developer
    Комментировать
  • Что такое Virtual DOM?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну вот есть DOM. Он медленный, и дергать его просто так не стоит. А есть виртуальный DOM, что-то типа прослойки между вашим кодом и реальным DOM. Вы можете дергать виртуальный DOM сколько вам душе угодно, а прослойка эта соберет всю инфу о том как вы чего делали, и попробует оптимизировать взаимодействие с реальным DOM что бы вышло как можно меньше действий.

    Пример - задача простая, у вас есть таблица и нужно постоянно обновлять ячейки новым значением. Значение приходят из апишки раз в пару десятков милисекунд (какая-то реалтайм статистика к примеру). Значения эти - просто массив данных.

    Решение в лоб - каждый раз когда приходят данные, дропать старую таблицу, проходить циклом по массиву и формировать новую. Это куча операций с DOM. У вас каждые n милисекунд будет полностью перестраиваться вся эта штука, дропаться и создаваться новые элементы и все это будет ужасно долго пересчитываться и перерисовываться.

    А теперь добавим между всем этим виртуальную апишку, которая запоминает что она там в прошлый раз создала и что надо в этот раз создать. Вы все так же влоб проходите циклом по массиву и просите виртуальный дом построить новую апишку, а виртуальный дом будет стараться переиспользовать то что у него уже есть, ну и все в таком духе. За счет этого получается нефиговый прирост производительности (но есть потери на работу самого виртуального DOM, зато можно фигачить как хочешь).

    Если же прослойку эту сделать со своим интерфейсом, можно получить слой абстракции для работы с UI. Именно это предлагает тот же React. Слой абстракции над UI. Вы можете работать с реактом, но UI будет отрисовываться не через DOM а скажем... это может быть нативный интерфейс мобильной платформы (гуглить native-react). Ну и т.д.
    Ответ написан
    Комментировать
  • Как должен выглядеть сайт-портфолио front end разработчика?

    axaxa_man
    @axaxa_man
    web developer
    ИМХО
    1) Обо мне – не стал бы писать, кому какая разница какой я коммуникабельный, проактивный и эмпатичный человек. Лучше привести примеры работы с ссылками на сайты и с подробно расписанными кейсами. Не просто простыня из рендеров страниц, а подробное описание: Цель, задачи, трудности, как решил, какой стек, результаты работы. Условно, можешь это писать на каком-нибудь medium и просто подтягивай на страницу портфолио. (Medium.com явно будет индексироваться лучше, чем твой сайт)
    Еще прикрепи свой github и активно веди его, отмечай какие-то свои находки, веди проекты, разрабатывай инструменты для сообщества и так далее.
    Да, контакты тоже нужно не забыть прикрепить.
    2) Всё, что не стесняешься приложить (телеграм, почта, социальные сети) [почтовый адрес не надо]
    3) Ты конечно можешь сделать "просто и понятно как у эпл", но зачем. Сделай как тебе нравится и как тебе хочется, ведь к тебе придут люди предложить работу и лучше пусть их зацепит то, что нравится тебе, тогда ты будешь кайфовать от работы.
    Ответ написан
    7 комментариев
  • Английский с нуля?

    @evg_96
    Есть канал на YT "English Galaxy". На нем нсть плейлист 350+ уроков, вся грамматика. Каждый урок делится на два. Теория, потом по этой теории практика. Перевод предложений.
    Единственное что мне помогло самостоятельно начать изучать английский. Подобного я больше не встречал.
    На данный момент прошел пока что только 58 уроков, но результат просто удивляет. Самому не верится что так продвинулся...раньше вообще думал нереально мне выучить английский.
    На данный момент на практике перевел около 8000 предложений. Как по маслу все ложится, без какого либо напряга. + очень много новых слов во время теории изучается. Сейчас уже знаком с Present Simple, Past Simple and Future Simple.
    Через урок будет большая контрольная практика по 3м временам.
    В общем очень советую. можете почитать отзывы под любым роликом, 99.9% положительные. к тому же все абсолютно бесплатно. + недавно вышло приложение 5555 тестов по граматике
    Ответ написан
  • Как моделировать дорожный трафик?

    @GreatRash
    Вот тут, можно нажать CTRL+U, промотать в самый низ и почитать скрипты.
    Ответ написан
    1 комментарий
  • Это во всех вузах так? И как вообще с таким образованием можно найти работу?

    И как с таким образованием искать работу?

    Энергичный <название_профессии> найдет как заработать.
    Ответ написан
    1 комментарий