Ответы пользователя по тегу JavaScript
  • Как из строки взять слова?

    @Karpion
    Я не понял, что именно надо сделать. Но могу посоветовать regex.
    Ответ написан
    Комментировать
  • Что такое конструктор объектов простыми словами?

    @Karpion
    Конструктор - это программа/подпрограмма/процедура/функция, которая инициализирует объект. Т.е. конструктор алоцирует память и размещает в ней данные, которые д.б. на момент начала работы. Если объект сложный - то надо много телодвижений.
    Ответ написан
    Комментировать
  • Нужно ли читать книги про JavaScript что бы его освоить?

    @Karpion
    Да. Но книги можно заменить сайтами. Ютубу не верьте, там фуфлогонов много.
    Ответ написан
    Комментировать
  • Как округлить число?

    @Karpion
    Я так понял, массив отсортирован. Значит, надо проверить, входит ли исходное число в диапазон "от меньшего до большего элемента массива". Если входит - то искать методом половинного деления (Дональд Кнут "Сортировка и поиск"; или Никлаус Вирт "Алгоритмы и структуры данных").

    Найдя - проверить/сравнить найденный элемент и предшествующий/последующий (смотря как искать будете). Выбирайте, какой Вам больше нравится.

    А можно тупо перебрать все элементы массива и выбрать наилучший.
    Ответ написан
    Комментировать
  • Почему утечка памяти в цикле и почему такое происходит?

    @Karpion
    Память расходуется в операторе array.push(item + step); - это потому, что Вы так написали. Я не знаю, как это ещё объяснить. И не знаю, зачем Вы это делаете.

    Вам верно указали, что условие завершения цикла while (+array[array.length - 1] !== 100); может не выполниться, причём в любом языке на любой платформе (а где-то - может выполняться). В данном случае (JS) оно не выполняется (на любой аппаратуре, у JS это стандарт на работу с float-числами).

    Я советую заменить условие "не равно" на "строго меньше" - мне кажется, получится то что надо.
    Либо можно запустить цикл по счётчику, вычислив заранее число повторений.

    И ещё совет: Если цикл ведёт себя неправильно, то вставьте внутрь отладочную печать изменяемых в нём переменных - например, array.length и item
    Ответ написан
  • Как перезаписать значение переменной при использовании модулей?

    @Karpion
    Я не понял, какой цвет Вы хотите достать. Ну, дописали Вы четвертый аргумент к функции colorize - а что дальше-то?

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

    @Karpion
    Самое простое: в адресе, куда отправляются данные из формы, пишем не "http://...", а "mailto:...".
    Ответ написан
    Комментировать
  • Как вывести индексы всех нечетных повторяющихся элементов массива кроме последнего?

    @Karpion
    Для начала надо создавать hash-массив, где индексами будут значения Вашего массива, а значением - список индексов. Тут же надо отфильтровать нужные (нечётные) значения, их в hash-массив заносить не надо.

    Затем проходим по hash-массиву, выкидываем последние индексы. При этом выкидываются и неповторяющиеся элементы.

    На и наконец собираем значения из hash-массива в нормальный массив, сортируем его - и это будет ответом.

    Я надеюсь, понятно объяснил.
    (Можно ли ещё быстрее - не знаю. Наверно, надо смотреть, зачем это извращение вообще нужно.)
    Ответ написан
    7 комментариев
  • Как сделать такой календарь?

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

    Мне кажется, Вам имеет смысл посмотреть "еврейский календарь" или "мусульманский календарь" - как они сделаны, какая там функциональность. А в исходниках страницы наверняка можно найти ссылки на используемые библиотеки.
    Ответ написан
    Комментировать
  • Как реализовать подбор по критериям?

    @Karpion
    Тут нужен человек, который понимает и в программировании, и в косметике. Или двое, которые понимают друг-друга.

    Я так понял, Вы знаете критерии подбора? Пишите тех.задание - по каким критериям как подбирать; при каком наборе критериев отвечать "недостаточно данных". И размещайте заказ здесь или на сайте фриланса.

    Если "изучать язык не очень хочется", то написать требуемое нормально - нереально.
    Ответ написан
    Комментировать
  • Почему нельзя объявлять переменную внутри {...} в JS?

    @Karpion
    Вам сюда и дальше по ссылкам.
    Ответ написан
    Комментировать
  • Как заменить часть текста в переменной частью текста из другой переменной?

    @Karpion
    1) Создать третью переменную. Записать в неё часть второй переменной, какую Вам надо.
    2) Заменить в первой переменной что надо на что надо.
    Третью переменную можно и не создавать - а сразу подставить результат выделения_части в выражение во втором пункте.

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

    @Karpion
    Рассмотрим второе, оно проще. Там написано: /[^A-Za-z]/ Это значит:
    1. Квадратные скобки - внутри список символов.
    2. ^ - отрицание "не", т.е. в список входит всё, кроме перечисленного дальше.
    3. A-Z - все буквы от A до Z.
    4. a-z - все буквы от a до z. Кстати, там дальше "i" - так что не надо отдельно упоминать заглавные и строчные буквы.
    Итак, данный регекс заменяет всё, кроме указанных букв. Если Вы хотите, чтобы он не трогал также и пробел - до добавьте его куда угодно, только не рядом с минусом, варианты:
    /[^ A-Za-z]/
    /[^A-Z a-z]/
    /[^A-Za-z ]/

    С цифрами - напишите аналогично: /[^0-9 ]/ или /[^\d ]/
    Ответ написан
    Комментировать
  • Как сделать чтобы после того как человек закончил заполнять поле, оно автоматом перекидывало на следующее поле?

    @Karpion
    Почитать, какие обработчики событий можно навесить на поле ввода. Выбрать подходящий - типа "изменение содержимого". Проверять там условие завершения ввода. При исполнении условия - перекинуть фокус на следующее поле.
    Ответ написан
    Комментировать
  • Есть ли способы защиты от слива js файлов?

    @Karpion
    Про обфускацию тут уже сказали - это плохой метод защиты по принципу "security via obscurity". А так - то, что отдаётся клиенту, защитить невозможно.

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

    @Karpion
    Я такую задачу решал на Acorn B+ ...

    Есть универсальное решение. Для каждой из трёх координат объёмного пространства пишем угол (против часовой стрелки от горизонтальной координаты) и масштаб.
    Для изометрии будет так:
    1. X: AX=-150 градусов, KX=1
    2. Y: AY=-30 градусов, KY=1
    3. Z: AZ=+90 градусов, KZ=1
    Плоские координаты x и y вычисляем так:
    1. x = x0 + X*cos(AX)*KX + Z*cos(AY)*KZ + Z*cos(AZ)*KZ
    2. y = y0 + X*sin(AX)*KX + Z*sin(AY)*KZ + Z*sin(AZ)*KZ
    x0 и y0 - это центральная точка.
    Множитель cos(AX)*KX и остальные - вычислить заранее один раз.

    Вроде, всё остальное д.б. очевидно. И модифицировать под любую систему несложно - менять углы и масштаб.
    Это чистая математика, без привязки к языку программирования.
    Ответ написан
    Комментировать
  • Чем заменить script?

    @Karpion
    Переименуйте файл со скриптом.
    Ответ написан
  • Как передать указатель на массив в виде текста?

    @Karpion
    Я не понял принципа организации дерева. Во второй ветке отсутствует "д" - это потому что у первых двух слов первая буква совпадает?

    Что Вы ищете? Какую-то строку? Зачем?
    Приведите невырожденный пример поиска какой-то строки и результат поиска.

    Ну, я могу предложить создавать массив указателей. Т.е. нашли первую букву - в нулевом элементе массива пишем её адрес (ссылку на неё) в дереве. Нашли вторую букву - пишем её адрес во втором элементе массива.
    Ответ написан
  • При каких обстоятельствах возникает такой баг?

    @Karpion
    Смотрите обработчик, который обрабатывает минус. Н, ту ветку обработчика, которая выполняется при нажатии минуса.
    Скорее всего, опечатка в имени переменной, что-то не то со скобками или иная глупая ошибка. Поставьте во всей ветке отладочную печать - ищите. где впервые появится неверное значение.
    Ответ написан