Ответы пользователя по тегу JavaScript
  • Как отфильтровать массив объектов по значениям из имеющегося объекта?

    search
    @search
    мама говорит что я особенный
    Есть такой способ. Либа называетися lodash. https://lodash.com

    Там это будет выглядеть вот так.

    _.filter([{a: 'b', c: 'd'}, {a: 'b', k: 'p'}, {a: 'c', l: 'p'}], {a: 'b'}) // outputs [{a: 'b', c: 'd'}, {a: 'b', k: 'p'}]


    В лоудеше собрано невероятно много полезных функций. От всей души советую начать ей пользоваться.
    Ответ написан
    Комментировать
  • Что в данном примере передается через this?

    search
    @search
    мама говорит что я особенный
    Вы всё верно поняли, по идеи
    [].indexOf.call(document.querySelectorAll(s), this)

    то же что и
    document.querySelectorAll(s).indexOf(this)

    Но document.querySelectorAll() возвращает коллекцию типа NodeList и это не тоже самое что Array, поэтому у неё отсутствует свой метод indexOf(). Так что конструкция [].indexOf.call(document.querySelectorAll(s), this) - это такой хитрый способ выполнить indexOf над объектом у которого нет метода indexOf. Я так подозреваю что где-то в недрах indexOf() превращает this в массив при помощи Array.from(). В этом можно убедиться, например, получив "1" при выполнении [].indexOf.call('abc', 'b') и "-1" при выполнении [].indexOf.call(1, 1).

    По-хорошему изначальную конструкцию можно переписать в

    Array.from(document.querySelectorAll(s)).indexOf(this)


    Тогда она будет вызывать меньше вопросов.
    Ответ написан
    Комментировать
  • Что такое Mixpanel и почему он загружается в сайт без мои разрешения?

    search
    @search
    мама говорит что я особенный
    Это аналитика https://mixpanel.com/

    Если вы не подключаете её напрямую в коде, то скорее всего она подключена через Google Tag Manager и еще каким-нибудь сторонним способом.
    Ответ написан
  • Насколько востребован рынок react и в целом js разработки на фрилансе, в частности на upwork?

    search
    @search
    мама говорит что я особенный
    Изучайте то что вам нравится и будет вам счастье непрерывное.
    Ответ написан
    Комментировать
  • Почему показывает is not a constructor?

    search
    @search
    мама говорит что я особенный
    замените
    exports.HelloWorld;
    на
    module.exports = HelloWorld;
    Ответ написан
    Комментировать
  • Как сложить время, если оба значения представлены строкой?

    search
    @search
    мама говорит что я особенный
    Изврат, конечно, но работает :)

    var time_start = "12:20";
    var duration = "01:25";
    var d1 = new Date('0000-01-01T' + time_start);
    var d2 = new Date('0000-01-01T' + duration);
    var finish = new Date('0000-01-01T00:00');
    finish.setHours(d1.getHours() + d2.getHours());
    finish.setMinutes(d1.getMinutes() + d2.getMinutes());
    var finishTime = finish.toTimeString().slice(0, 5);
    Ответ написан
    1 комментарий
  • Что изучать jQuery или чистый JavaScript?

    search
    @search
    мама говорит что я особенный
    То что вы называете "чистый JS", как противопоставление jQuery- это, просто API к браузеру. Вот он весь https://developer.mozilla.org/en-US/docs/Web/API . Как видите, там много всего. И запоминать наизусть это не нужно, потому что есть эта ссылка.

    То что вы называете jQuery - это обёртка над функциями из предыдущей ссылки вот она: api.jquery.com . Тоже довольно много функций, которые тоже не обязательно зазубривать. Потому что есть вторая ссылка.

    Без понимания принципов работы JS - две ссылки выше - это просто непонятный набор цветных букв. Так что учите JS. В этом случае сможете использовать и "чистый JS" и jQuery и любую другую библиотеку. Чтоб оседлать этот язык и чувствовать себя как рыба в воде, рекомендую обратить внимание на такие пункты как:
    • синтаксис языка
    • область видимости
    • функции высшего порядка
    • замыкания
    • event loop
    • работа c DOM


    Как-то так.
    Ответ написан
    3 комментария
  • Front-end разработка, правильная сборка?

    search
    @search
    мама говорит что я особенный
    Если компания дорожит качеством продукта и безопасностью данных своих клиентов, то сборка и выкат новой версии проводится автоматически Continuous Intrgration сервером. У программистов вобще нет доступа к проду. Доступ к проду есть только у CI-сервера. У программиста есть доступ только к GIT репозиторию проекта. Вся работа проводится в своём окружении и в отдельной ветке. Затем ветка тестируется на тестовом окружении (близком к продакшену), если надо правится, и затем вливается в главную ветку проекта. После этого CI подхватывает изменения, билдит фронт и бэк и выкатывает это дело на прод. Это очень общий вариант. Там есть куча нью-ансов.

    Лично я предпочитаю идти по вышеописанному пути с первого дня работы даже когда работаю один. Потому что в этом случае ты всегда можешь откатиться на последний стабильный релиз, уйти дамой и доделать всё на следующий день. Вместо того чтоб с выпученными глазами и трясущимися губами всю ночь что-то там фиксить (что есть признаком очень низкокачественного проекта).

    UPD
    Забыл сказать, что этот путь не даётся легко. Нужно потренироваться где-то полгодика. Но зато на всю жизнь получаешь спокойные ночи и здоровый цвет лица, так что оно того стоит.
    Ответ написан
    2 комментария
  • Как написать регулярное выражение, начинающие свой путь с конца строки?

    search
    @search
    мама говорит что я особенный
    /[^\/]+(?:\.png|\.jpg|\.jpeg|\.gif)$/

    Вам нужно взять всё что после последнего слеша, т.е. все_последние_символы_которые_не_слеш. Если вы хотите пренебречь расширением файла, то можно вообще вот так:

    /[^\/]+$/
    Ответ написан
    1 комментарий
  • Как обратиться к параметрам функции как к объекту, по аналогии с arguments?

    search
    @search
    мама говорит что я особенный
    В ES6 появились параметры по умолчанию.

    Можно написать

    function doSomething(a='test', b=1, c=true) {
    }


    И если не передавать в doSomething() эти переменные примут значения по умолчанию.

    Вообще обычно когда появляется необходимость в сабже, то просто делают функцию, которая принимает объект с парами ключ-значение, а недостающие в объекте значение дополняет значениями по умолчанию.

    Как-то так:
    function doSomething(options) {
      var defaultOptions = { validate: false, limit: 5, name: "foo" };
      options = $.extend({}, defaultOptions, options || {}); // Дополняем options значениями по умолчанию
    }


    Но если уж прям не терпится получить все параметры из любой функции, то у любой JS функции есть метод toString(), который возвращает код самой функции в виде строки. Это недокументированная особенность, поддерживаемая всеми браузерами. Для эксперимента можете запустить этот код в консоли чтоб видеть наглядно.

    var a = function(a,b,c) {var someCodeInside = true;};
    console.log(a.toString());


    Можете взять полученную в результате toString() строку и выудить из неё аргументы.

    Именно по такому принципу работает Dependency Injection в первом ангуляре.

    Вот тут есть примеры кода по вытягиванию параметров из функций https://stackoverflow.com/questions/1007981/how-to...
    Ответ написан
    Комментировать
  • Как сделать сортировку объектов внутри массива по количеству ключей?

    search
    @search
    мама говорит что я особенный
    Array = Array.sort(function(a, b) {
      return Object.keys(a).length - Object.keys(b).length;
    });


    P.S.
    Array - это зарегистрированный конструктор в JS. Лучше не давать переменным названия как Object, Array, String и т.п. Иначе всё поломается.
    Ответ написан
    Комментировать
  • Как брать данные методом GET c URL и выводить на странице в режиме лайв?

    search
    @search
    мама говорит что я особенный
    Библиотека для раутинга может вам помочь. Например вот https://github.com/swipely/aviator
    Ответ написан
  • Какой метод jQuery следит за изменениями?

    search
    @search
    мама говорит что я особенный
    Вот плагин, позволяющий следить за изменениями атрибутов https://github.com/meetselva/attrchange. В папке examples лежат примеры его использования.

    В описании плагина есть информация о том как он это делает, если вдруг стало интересно.
    Ответ написан
    2 комментария
  • Как повысить компрессию JS кода не нарушая внешний вид (читабельность)?

    search
    @search
    мама говорит что я особенный
    Я так понял что вы еще не разобрались с тем как пользоваться системой контроля версий. Отсюда и желание положить несжатые файлы на сервак чтоб не потерять их. Так никто не делает, потому что это путь к провалу. Как делают:
    1. Весь код хранится в системе контроля версий (GIT). Считайте что это файловое хранилище вашего проекта, к которому имеет доступ любой разработчик
    2. Перед тем как залить код на сервер, он прогоняется через программу, которая жмёт и склеивает в один файл весь javascript и css. Обычно этот шаг автоматизирован. В вашем случае я бы начал делал эту рутину руками, пока не надоест и не захочется это автоматизировать при помощи, например, Gulp.

    Вот тут вы можете зарегистрироваться и создать приватное GIT-хранилище для своего проекта: https://bitbucket.org/, а затем положить в него файлы проекта. После того как вы зарегистрируетесь, и создадите GIT-хранилище (кстати, в терминах гита, хранилище называется "репозиторий"), у вас появится ссылка на это хранилище. Эта ссылку - тот адрес, по которому хранятся рабочие файлы вашего проекта. Для других участников проекта (разработчики, заказчики, тестировщики) гит-репозиторий проекта важен даже больше, чем файлы на сервере. Потому что к файлам на сервере обычно имеют доступ только избранные, а к файлам проекта дожны иметь доступ все участники.
    Ответ написан
    Комментировать
  • Какой взять плагин для timeline?

    search
    @search
    мама говорит что я особенный
    D3 заточен под такие дела. Вот нечто похожее
    bl.ocks.org/rkirsling/33a9e350516da54a5d4f

    D3, правда, не плагин а библиотека. На ней много чего можно cделать:
    https://github.com/d3/d3/wiki/Gallery
    Ответ написан
    1 комментарий
  • Как из плоского массива с объектами сделать вложенный (иерархический)?

    search
    @search
    мама говорит что я особенный
    Вот так jsfiddle.net/alexandrupausan/qjxpLhfu

    Гугл знает больше, если искать на языке, которым пользуется полтора миллиарда человек ;)

    https://www.google.nl/search?q=javascript+flat+arr...
    Ответ написан
    1 комментарий
  • Что делать если команда говнокодит?

    search
    @search
    мама говорит что я особенный
    Ой как я вас понимаю. Сам страдал от подобного долгие годы (9 лет, если быть точным). К сожалению, мгновенного решения для вашей проблемы не существует. А смена работы - всего-лишь временная отдушина. В моём случае технический скилл был (и надеюсь остаётся) выше среднего, а лидерский (так называемый софт-скилл) - на нуле. Умение договариваться с людьми, адекватно реагировать на нужды коллег, продукта и бизнеса - оказались очень полезными навыками. К сожалению этот скилл не прокачаешь за выходные. Вот примерный список того что можно делать для прокачки лидерских качеств:
    - читать книги (в т. ч. художественную литературу)
    - участвовать в опен-соурс проектах
    - делиться опытом (выступать на митапах, выступать в кругу коллектива)
    - прокачивать т.н. "эмоциональный интеллект"

    В своём случае я почувствовал ощутимые улучшения примерно через год целенаправленной работы над собой.

    Как показывает жизненный опыт, на одних-лишь технических навыках в рай не уедешь. Чтобы быть красавчиком нужно уметь решать конфликтные ситуации.
    Ответ написан
    2 комментария