Ответы пользователя по тегу JavaScript
  • Кто знает плагин автозаполнения js для sublime text3?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Ответ написан
    Комментировать
  • Суть 3 строки,если можно подробно "по символам грубо говоря"?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Читайте внимательно учебник. Судя по вопросам вы читаете learn.javascript.ru. В нем все очень подробно разбирается. Не поняли с одного раза, читайте еще раз, до тех пор пока не поймете. Вы задаете, очень глупые вопросы.

    function checkSpam(str) {
      var lowerStr = str.toLowerCase();
    
      return !!(~lowerStr.indexOf('viagra') || ~lowerStr.indexOf('xxx'));
    }
    
    console.log(checkSpam('buy ViAgRA now'));
    console.log(checkSpam('free xxxxx'));
    console.log(checkSpam("innocent rabbit"));


    ~lowerStr.indexOf('viagra') // Если подстрока найдена, то вернется ее индекс начальной позиции.
    Если подстрока не найдена, то вернется -1. Для удобства делают побитовое НЕ (~).
    т.е если строка будет найдена то в любом случае вернется положительное число, при побитовом НЕ, оно так станет в любом случае или строго меньше 0 или строго больше.
    А любое число отличное от 0 является true. Если строка не будет найдена, то вернется -1, при побитовом НЕ, станет 0. В логическом представлении false.
    Тоже самое и с ~lowerStr.indexOf('xxx').
    !! - это двойное отрицание. Костыльный прием перевести что угодно в булевый тип, trueили false.
    || - это побитовое ИЛИ.

    // В итоге при передачи строки "buy ViAgRA now":
    // ~lowerStr.indexOf('viagra') = -5
    // ~lowerStr.indexOf('xxx') = 0
    // (~lowerStr.indexOf('viagra') || ~lowerStr.indexOf('xxx')) = -5
    // !!(~lowerStr.indexOf('viagra') || ~lowerStr.indexOf('xxx')) = true
    // Возвращается true


    Вот так возможно вам будет более ясно как работает "проверка спама":
    let checkSpam = string => {
    	let lowerCaseString = string.toLowerCase(); // "Преобразовать" строку в строку с нижним регистром
      
      if (lowerCaseString.indexOf(`viagra`) != -1 || lowerCaseString.indexOf(`xxx`) != -1) { // Если найдена хотя бы одна из подстрок, то вернуть true
      	return true;
      } else { // иначе вернуть false
      	return false;
      }
    }
    
    console.log(checkSpam('buy ViAgRA now')); // true
    console.log(checkSpam('free xxxxx')); // true
    console.log(checkSpam("innocent rabbit")); // false
    Ответ написан
    1 комментарий
  • Как отличить постфиксную форму i++ от префиксной ++i?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Объяснение
    Явно же выделено жирным: Постфиксная форма i++ отличается от префиксной ++i тем, что возвращает старое значение, бывшее до увеличения.
    Ответ написан
    Комментировать
  • Какие значения строк cо слова function?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    getDecimal(12.345); // 0.345
    getDecimal(1.2); // 0.2
    getDecimal(-1.2); // 0.2
    getDecimal(5); // 0
    getDecimal(1.3); // 0.3
    
    function getDecimal(a) {
      var b = Math.abs(a);
      
      console.log("Значение b: " + b);
      
      var returnValue = +(b - Math.floor(b)).toFixed(10);
      
      console.log("Значение(returnValue) которое возвращается при значении a = " + a + ": " + returnValue);
      
      return returnValue;
    }
    
    // Значение b: 12.345
    // Значение(returnValue) которое возвращается при значении a = 12.345: 0.345
    // Значение b: 1.2
    // Значение(returnValue) которое возвращается при значении a = 1.2: 0.2
    // Значение b: 1.2
    // Значение(returnValue) которое возвращается при значении a = -1.2: 0.2
    // Значение b: 5
    // Значение(returnValue) которое возвращается при значении a = 5: 0
    // Значение b: 1.3
    // Значение(returnValue) которое возвращается при значении a = 1.3: 0.3
    Ответ написан
    Комментировать
  • 2 и 3 строка что делает?можно подробнее?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Лучше все таки проверить что передана именно строка.
    let ucFirst = string => {
      if (typeof string === "string") { // Проверка на тип
        return !string ? string : string[0].toUpperCase() + string.slice(1); // Если строка пустая, то вернуть эту строку, т.е пустую стоку. Если строка не пустая, то вернуть новую строку у которой первый символ будет заглавным.
      } else {
        throw new Error(); // Если передана не строка, то выкинуть исключение
      }
    }
    
    console.log(ucFirst("string")); // return String
    console.log(ucFirst(12)); // Error
    Ответ написан
    6 комментариев
  • Верна ли данная диаграмма?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    let object = {
      key: value,
      otherKey: value
    };
    
    // object  - именованная переменная ссылающаяся на объект в памяти, точнее на ассоциативный массив, который является коллекцией объектов c ключами без повторений.
    // key - ключ
    // value - значение этого ключа
    
    // otherKey !== key
    Ответ написан
    Комментировать
  • Как перебрать массив getElementsByClassName?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    let elements = document.getElementsByClassName(`имя класса`);
    
    for (let i = 0; i < elements.length; i += 1) {
    	if (elements[i] пустой) {
    		// Поменять цвет рамки
    	}
    }
    Ответ написан
    Комментировать
  • Перевод из текста в HTML?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    document.querySelector(`.uc-message`).innerHTML = document.querySelector(`.uc-message`).innerHTML.replace(/\&lt;/g, `<`).replace(/\&gt;/g, `>`);
    Ответ написан
    Комментировать
  • Как пронумеровать списки?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    let arr = [`Яблоко`, `Груша`, `Апельсин`, `Банан`];
    
    for (let i = 0; i < arr.length; i++) {
      console.log(`${i + 1} ${arr[i]}`);
    }
    Ответ написан
    3 комментария
  • Какой смысл от for of когда есть for in?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    // Новый синтаксис добавлен для перебора итерируемых коллекций. Можете написать свою коллекцию с реализацией итератора и использовать for..of для ее перебора.
    
    let arr = [`a`, `b`, `c`, `d`, `e`];
    
    for (elem in arr) {
    	console.log(elem); // 0 1 2 3 4
    }
    
    for (elem of arr) {
    	console.log(elem); // a b c d e
    }
    
    for (let iter = arr[Symbol.iterator]; iter.done;) {
    	console.log(iter.next()); // a b c d e
    }
    Ответ написан
    Комментировать
  • В нативном js есть метод .on?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    elem.onclick = event => {}

    elem.addEventListener(`click`, event => {}, false);
    Ответ написан
    Комментировать
  • Как проверить переменную "лежит" там строка или число?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    let value = prompt();
    
    if (typeof value == "string") {
    	alert("String");
    }
    
    // PS. prompt всегда возвращает строку
    Ответ написан
    2 комментария
  • Ошибка в калькуляторе на js, почему?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    let a = prompt(`Что вы хотите сделать?`, `Напишите "умножить" или "разделить", "сложить" или "вычесть"`);
    
    if (a == `умножить`) {
    	let z = +prompt(`Напишите первое число`, ``);
    	let x = +prompt(`Напишите второе число`, ``);
    
    	let result = z * x;
    
    	alert(result);
    }
    Ответ написан
    Комментировать
  • Как сделать индикатор заполненности полей?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    // Количество заполненных полей в форме делишь на общее количество полей и умножаешь на 100 и передаешь в метод отображения прогресс бара
    // Например в форме 7 полей. Заполнил 3. Получается (3 / 7) * 100 = примерно 43%
    // Передаешь в метод и отображаешь 43%
    //
    // Твой же способ как по мне, то неправильный. Поле же не имеет определенного размера. Человек может ввести например имя "Оля" (3 символа) и имя "Светлана" (8 символов). И считывать процент заполнения по символьно в таком случае не получится
    Ответ написан
    Комментировать
  • Ребята распишите мне данную рекурсию и ее результат,у меня уже голова болит никак не пойму как она работает?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Вот же у вас вывод что происходить во время выполнения

    // Move disc 1 from SRC to DST
    // Move disc 2 from SRC to AUX
    // Move disc 3 from SRC to DST
    Ответ написан
    1 комментарий
  • Как решить эту задачу с коробкой?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    let box = {
      locked: true,
      unlock: function() {
        this.locked = false;
      },
      lock: function() {
        this.locked = true;
      },
      _content: [],
      getContent: function() {
        return this.locked ? new Error("locked") : this._content;
      }
    };
    
    let withBoxUnlocked = function(box, callback) {
      if (box.locked) {
        box.unlock();
    
        callback(box);
    
        box.lock();
      } else {
        callback(box);
      }
    }
    
    withBoxUnlocked(box, function(box) {
      box.getContent().push("gold");
    });
    
    box.unlock();
    console.log(box.getContent()); // [gold]
    box.lock();
    
    console.log(box.locked); // true
    Ответ написан
    Комментировать
  • Какое издание Флэнагана читать?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Странно, что вы абсолютно точно хотите начать с определенной книги, но в тоже время вы не знаете чем отличается одно издание этой книги, от другого...
    По какому критерию вы определились, что хотите начать именно с Фленагана?

    Одно могу сказать теперь. Читайте все подряд и все. Практически все книги для по JS, для людей которые вообще не знакомы с языком, будут одинаково полезны. Вам все равно из какой книги вы получите общее представление о языке.

    Просто берите более менее актуальную книгу (ES5+) и читайте ее.

    Также хочу отметить, что в отличие от всех книг (на русском и не считая head first), только в одной есть достаточно большое количество задач для закрепления пройденной темы. Это учебник Ильи Кантора.
    Ответ написан
    1 комментарий
  • Как рандомно вывести три элемента из array в js?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    let getArrayElements = (arr, n = arr.length) => {
    	let resultArray = [];
      let array = arr.slice();
      n = n > array.length ? array.length : n
    
    	for (let i = 0; i < n; i += 1) {
    		resultArray.push(array.splice(Math.floor(Math.random() * array.length), 1)[0]);
    	}
    
    	return resultArray;
    }
    Ответ написан
  • Как выцепить данные из скобок?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Получение текста:
    let menu = document.querySelector(".menu");
    let value = menu.textContent;
    
    console.log(value); // Баланс
    
    // Непонятно для чего вам нужно получить значение которое вы сами же и передаете в функцию.


    Объясните задачу, для чего вам эти вычисления. Возможно вы вообще не то делаете.
    Ответ написан
    1 комментарий
  • Как сохранить значение категории при выборе в dropdown меню?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Все нормально работает.
    941a9e3ed0a64f5da3eb593e86f6a54c.png
    Ответ написан