Ответы пользователя по тегу JavaScript
  • Как вывести куб введённого числа?

    @Karpion
    А на какой стадии процесса возникли трудности?
    Ответ написан
  • Return не возвращает значение, почему?

    @Karpion
    function sorting имеет два аргумента, а вызывается с тремя. Нельзя так делать.
    Ответ написан
    Комментировать
  • Приложение на JS это своего рода сайт?

    @Karpion
    В первом приближении:
    Разница между "сайтом" и "не-сайтом" - в том, в каком окружении оно выполняется.
    Сайт выполняется в браузеое - так что по требованиям безопасности имеет право пользоваться только сетевым API и только к тому сайту, с которого взят (сайт - это сервер, если на этом сервере только один сайт; в противном случае надо рассматривать сайт как будто это вирт.сервер).
    А приложение в общем случае может использовать много разных API - и локальный API (в первую очередь - доступ к файлам), и сетевой API в любое место. Причём это не зависит от того, на каком языке оно написано (если только язык не содержит собственных ограничений).
    Ответ написан
    Комментировать
  • Зачем нужны побитовые операторы, реальные примеры использования?

    @Karpion
    Ну, например, можете почитать, как в Unix хранится тип файла (обычный файл, директория/каталог, несколько видов спец.файлов) и атрибуты/права доступа. Чтобы узнать, имеет ли файл нужный тип - надо сделать "AND 0b1111_000_000_000_000" (это число - в двоичном виде; подчёркивания - мне для удобства) и сравнить с кодом нужного типа.
    Тут мы видим, что побитовые операции позволяют работать с параметрами, упиханными по несколько штук в одно целое число.

    Ну или вот пример применения побитовых операций: "Целочисленный логарифм по основанию 2 за O(1)".
    Ответ написан
  • Как можно сократить код FizzBuzz до двух ифов?

    @Karpion
    Ну, можно такой вариант:
    1. Делаем заранее массив из 15 элементов. В нулевом элементе - "FizzBuzz". В элементах, кратных трём [3,6,9,12] - "Fizz". В элементах, кратных пяти [5,10] - "Buzz". В остальных - пусто.
    2. Вычисляем i%15. Берём соответствующий элемент массива.
    3. Если элемент массива не пустой - это ответ. Если пустой - то берём исходное число i. Это и будет единственный "if".
    Как видите - я схитрил, заменив проверки на изъятие решения из готовой таблицы. очевидно - этот метод хорош только при малом размере таблицы. Вообще, табличные методы вычислений - весьма хороши в плане скорости, рекомендую; но естественно, про размер таблицы надо помнить.
    Ответ написан
    Комментировать
  • Как работать с canvas?

    @Karpion
    Не вижу там ничего трёхмерного.
    Откройте исходный код страницы и смотрите, как оно сделано.
    Ответ написан
  • Как сделать бесконечную зацикленную анимацию, можно js(jquery) или css?

    @Karpion
    Самый простой способ: проверять координаты каждого объекта отдельно; и если они выходят за рамки, то приводить их снова куда надо, прибавляя или вычитая ширину/высоту экрана.

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

    @Karpion
    Как правило, такие проверки привязывают к функции, меняющей количество объектов. Благо ООП к этому предрасполагает, давая возможность повесить на переменную обработчик, вызываемый как при изменении значения этой переменной, так и при считывании её значения.

    Мне кажется, Вам надо смотреть "выше" - зачем всё это затевается.
    Ответ написан
    Комментировать
  • Как получить значение href?

    @Karpion
    У объекта A д.б. атрибут HREF. В чём вообще проблема?
    Ответ написан
    Комментировать
  • Почему метка не определена?

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

    @Karpion
    Слово "синхронизировать" здесь неуместно.

    Я так понял, Вам надо искать элементы массива, которые удовлетворяют сразу всем условиям. Т.е. надо объединить условия оператором "и".

    Как Вы вообще ищете по массиву?
    Ответ написан
  • Почему return выводит undefined, а консоль результат?

    @Karpion
    У Вас странное представление о рекурсивной функции. Да и вообще о работе функций: есть правило "функция не должна менять свои аргументы".

    Попробую написать решение в примитивном виде:
    function getSum(begin, end) {
    	return(begin + getSum(begin + 1, end)
    }
    Как видите, параметр sum тут не нужен. Ну и разумеется, надо дописать условие завершения рекурсии - их два, они у Вас уже есть.
    Ответ написан
    Комментировать
  • Как понять и реализовать битовую карту?

    @Karpion
    Запись "HOVERED | FOCUSED" читается "HOVERED или FOCUSED". Однако, по-русски это должно говориться "HOVERED и FOCUSED" (аналог: крокодил - длинный и зелёный").
    Ещё это выражение можно записать "HOVERED + FOCUSED" - будет то же самое, и к тому же понятнее. Но эта форма записи плоха тем, что для двух одинаковых признаков "HOVERED | HOVERED == HOVERED", а вот при сложении будет не так.

    Допустим, переменная x содержит в себе статус кнопки. Работать с этой переменной надо так:
    • Кнопка попала в фокус: x|=FOCUSED
    • Кнопка вышла из фокуса: x&=~FOCUSED
    • Проверка, в фокусе ли кнопка: x&FOCUSED?в_фокусе:не_в_фокусе
    Это можно использовать бездумно, не зная о двоичном представлении чисел.
    Ответ написан
    2 комментария
  • Как сделать To do list с сохранением данных?

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

    @Karpion
    Я как-то не очень в теме, но мне кажется - в исходном примере картинка не задана какими-то координатами, а рисуется из программы. Так что сначала надо решить, по какой формуле должна рисоваться Ваша картинка, т.е. по какой формуле должны меняться координаты точек.
    Ответ написан
    2 комментария
  • Как присваивать уникальный id для каждого купленного предмета?

    @Karpion
    А зачем? И что делать, если человек купил два одинаковых предмета?
    Ответ написан
  • Бинарный поиск - как определить кол-во шагов?

    @Karpion
    Бинарный поиск также называет "писк делением пополам". Попробуем пойти с конца.
    1. На последнем этапе мы имеем массив из двух элементов, после деления которого получаем решение - найденный нужный элемент или же понимание того, что нужного элемента в массиве нет.
    2. На предпоследнем этапе мы имеем массив из четырёх элементов, который поделим и получим массив из двух элементов. Или м.б. массив из трёх элементов - тогда этот шаг м.б. предпоследним или последним.
    3. И так на каждом шаге размер массива удваивается.
    Т.о., за k шагов мы можем разделить массив, имеющий 2**k элементов. Тогда k=log2(n), т.е. речь идёт о логарифме_по_основанию_два.
    Если же n не является степенью двойки - то k=roundup(log2(n)), т.е. мы округляем дробное число до целого вверх. log2(100)=6.644, с округлением вверх получаем семь.

    Что такое "логарифм" - программист должен знать. Без этого хороший код писать не получится - будет тупо непонятно описание алгоритмов.

    Очень советую почитать книги классиков: Кнут, Вирт и прочие. Там не про современные системы программирования, а именно про алгоритмы - не зависящие ни от архитектуры компьютера, ни от языка программирования. Старые книги хороши тем, что прошли проверку временем. Хотя, конечно, там могут отсутствовать некоторые знания, полученные недавно. Зато там нет (или очень мало) откровенного фуфла, которого много в современных книжках.
    Ответ написан
    2 комментария
  • Как посчитать количество каждой повторяющейся цифры в диапазоне от 0 до 109?

    @Karpion
    Вместо переменных zero, one, ..., nine - надо сделать массив. Тогда String(i[i.length - 1] будет индексом элемента массива, который надо инкрементировать.

    Если так нельзя - то есть оператор switch/case.

    Ну и, как тут уже сказали, надо проверять все String(i[*]), а не только последний.
    Ответ написан
    Комментировать
  • Как ежедневно увеличивать число?

    @Karpion
    А где это число есть и куда отдавать результат? Насколько случайным д.б. прибавляемое число?
    Ответ написан