• Почему условный тернарный оператор не возвращает нужное значение?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Потому что вы забыли написать return:
    (item, i) => {
      return (i == 0)? item : item[0].toUpperCase() + item.slice(1);
    }

    Ну либо можно убрать лишние фигурные скобки:
    (item, i) => (i == 0)? item : item[0].toUpperCase() + item.slice(1)
    Ответ написан
    1 комментарий
  • Почему данные с сервера приходят с null?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Проблема может быть в чём угодно на стороне сервера, но явно не в самих заголовках. Потому что json-ответ вы всё же получаете.

    Смотрите в сторону серверного кода, который эти самые заголовки разбирает. Возможно, там при каких-то заголовках одна логика, а при других заголовках - другая логика (содержащая ошибки по сравнению с первой логикой). Может быть, там простейшая защита от парсинга и т.д. В общем, надо смотреть серверный код.
    Ответ написан
    Комментировать
  • Как отследить модальное окно страницы в расширении chrome?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    MutationObserver

    Ну либо костыль через setInterval().
    Ответ написан
    1 комментарий
  • Как проверить введенное римское число на правильную запись?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Просто сделайте функцию перевода римского числа в обычное (int32). Ошибка (т.е. исключение) в ходе работы этой функции и будет означать невозможность преобразования. Алгоритм тот же.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    я вроде как прописал tofixed

    Вроде как нужно прописывать в нужном месте, а не просто для галочки.

    Здесь вы присваиваете summ, а не summ.toFixed(2):
    domElements.rating.total.innerHTML=summ
    Ответ написан
    2 комментария
  • Есть ли готовые парсеры под такую задачу?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Советую написать простенький скрипт самому.
    Либо попросить у друга-программиста, это займёт максимум 30 мин у него.
    Либо обратиться к фрилансеру.
    Ответ написан
    Комментировать
  • Как правильно анимировать элементы при помощи setInterval?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    ...методом setInterval к каждой картинке по отдельности...

    Вот здесь просчёт.

    Нужно отсчитывать временной интервал следующей картинки от предыдущей, а не от общего начала. Потому что на самом деле нет гарантии, сколько времени будет длится очередной таймаут. Если вы укажете 500мс, то это лишь означает не менее 500с, а в теории может быть и 1 сек, и 2 сек, и вообще сколько угодно. И чем дольше анимация, тем больше накапливается мелких ошибок, и тем заметнее визуальный рассинхрон.

    Подойдёт единый setInterval с общей логикой внутри. Либо цепочка из setTimeout, в которой одновременно запланирован только один.
    Ответ написан
  • Как сделать частично статичный текст в input?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    <input type="text" disabled>

    input1.disabled = true;
    Ответ написан
  • Почему пишет что на этом айфоне было создано слишком много apple id?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Как проверить айфон на «новость»?

    Если у вас 200%-ое зрение, либо с помощью бликов, можно увидеть мелкие царапины, отпечатки от старых владельцев (до того, как вы сами их оставите, конечно же). Это относится к любой технике, не только Apple.

    Ну а так, свяжитесь с тех. поддержкой, как вам и советуют. Можете оформить расширенную поддержку (AppleCare). Думаю, на каком-то этапе обязательно всплывёт информация, является ли данный девайс б/у.
    Ответ написан
    Комментировать
  • В чём ошибка в задаче?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нельзя писать arg1 || arg2 != '', подобно кальке с русского языка.
    В программировании всё последовательно:
    • Либо сначала считает !=, а этот операнд имеет приоритет, поэтому если без скобок, то это эквивалентно такому: arg1 || (arg2 != ''). В этом случае мы проверяем, что arg2 не является пустой строкой. При этом он может быть символом или числом, например. ИЛИ arg1 является истинным.
    • Либо сначала считает ||, если иначе расставить скобки: (arg1 || arg2) != ''. В этом случае тоже ерунда какая-то. Мы проверяем истинность хотя бы одного аргумента, а потом зачем-то результат операции сравниваем с пустой строкой.


    Чтобы составить условие правильно, его нужно структурировать для понимания, то есть составление как бы разбить на этапы.
    1. Сначала нужно понять, как сформулировать простое условие "не является буквой". Условно запишем по-русски.
    2. Далее составляем следующее более сложное условие из кирпичиков, полученных на предыдущем этапе: (arg1 является буквой) && (arg2 является буквой). То есть для каждого аргумента повторяем выражение полностью. Если сомневаетесь в приоритетах вычислений, можно ещё и скобки расставить.


    Но вернёмся к началу. Вроде бы простое условие "arg является буковой", но готовой функции у нас нет. И чтобы проверить это утверждение, нужно проверить ещё более простые:
    1) что arg является строкой в принципе (не числом, не булевой переменной, не всякими там null и пр.)
    2) что эта строка имеет длину 1. Ведь если больше 1, то это уже не просто буква. А если меньше, то есть 0, то это тем более не буква.
    3) что оставшийся символ действительно является буквой. Не прибегая к регулярным выражениям (что для вас будет явно сложно), я бы схитрил так:
    arg==arg.toLowerCase() || arg==arg.toUpperCase()
    Обратите внимание на порядок операций. Сначала считаются сравнения, а потом они складываются через логическую операцию ИЛИ. То есть, если по-русски, мы записали, что символ равен самому себе в верхнем регистре, либо он равен самому себе в нижнем регистре. Это и будет означать, что это буква.

    Если же опустить предыдущие проверки, и допустить, например, что это длинная строка, например "абвгд", то у нас последнее утверждение окажется ошибочно верным, так что сначала нужно исключить всё лишнее.

    Ещё один совет: не обязательно городить бесконечный if else. Конечно, так тоже можно, но получается более громоздко и менее очевидно. Проще писать серию return'ов. Это всегда проще, а в вашем примере сам бог велел так делать. Пример:
    if (typeof arg1 != "string") return -1;
    if (arg1.length != 1) return -1;
    //и т.д.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Дело в совместимости флешки и биоса.
    Запишите загрузочный ISO образ на флешку с помощью UltraISO в режиме USB-HDD+ v2
    Ответ написан
  • Как сгруппировать объекты в массиве?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Серьёзно? Это задача для начинающего.
    Императивно и в лоб: перебираете все элементы массива в цикле, по ходу дела создаёте нужные вам группы.
    как-то так
    let result = [];
    let num = 0;
    let obj;
    records.forEach(e => {
      if (num++ === 0) result.push(obj = {});
      Object.assign(obj, e);
      if (num === 5) num = 0;
    });
    console.log(result);
    //но можно сделать короче и красивее
    Ответ написан
    1 комментарий
  • Не понимаю, как это работает?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Похоже, что используется недокументированная особенность функции Array.sort()
    Ведь согласно документации, сравнивающая функция должна однозначно давать порядок, а в вашем примере получается, что compareFunction(a,b)===compareFunction(b,a)

    Насчёт a и b - они как бы есть, но они не указаны в параметрах, потому что не используются. Их можно указать, чтобы как бы соблюсти формальность, но смысла нет конкретно для вашего хитрого примера:
    arr.sort((a,b) => -0.5);

    Можете также заняться отладкой, чтобы понять, что происходит под капотом:
    arr.sort((a,b) => {console.log(a,b); return -0.5});


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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Код не может просто взять и отказаться работать. Потому что это код.

    Если он получил управление, то он будет работать до тех пор, пока не закончит работу, или пока не случится ошибка (runtime).

    Если же код не получил управление, то тому тоже должна быть причина (например, конкретная синтаксическая ошибка).
    Ответ написан
    Комментировать
  • Что такое модульность приложения?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Модульность - свойство архитектуры.
    Само собой разумеется, её надо продумывать с самого начала, потому что потом менять её обычно очень больно (т.е. долго, вплоть до переписывания всего с нуля).

    Вообще начните с изучения ООП, тогда вопрос по идее отпадёт.

    А навык придёт с опытом.
    Ответ написан
    2 комментария
  • ЭЦП - это безопасно?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нет, не безопасно.

    Пора бы уже запомнить раз и навсегда, что 100%-ой безопасности нет и не может быть нигде и никогда. Даже если вы держите мягкий и пушистый персик в руке, он может стать причиной вашей смерти.

    ЭЦП могут украсть, пароль выпытать паяльником и т.д.
    Ответ написан
    1 комментарий
  • Как корректно записать данные?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Как бы костыль, но в большинстве случаев будет работать:
    data = JSON.parse(result.replace(/\]\[/g,'],['));

    Ещё можно так:
    data = JSON.parse(result.split('][').join('],['));
    Ответ написан
    4 комментария
  • Как написать регулярку для строки, которая может быть пустой?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    /^([a-zA-Z]*)$/u
    Ответ написан
    Комментировать