Ответы пользователя по тегу JavaScript
  • JS — как оставить только 1 знак после запятой?

    @VadimFilimonov
    // Шаг 1. Сохраняем число
    const number = 9.47;
    // Шаг 2. Умножаем на десять, чтобы...
    const newNumber1 = number * 10; // 94.7
    // Шаг 3. С помощью Math.floor отбросить дробную часть
    const newNumber2 = Math.floor(nuwNumber1); // 94
    // Шаг 4. Обратно делим на 10 (т.к. мы шаге 2 умножали на 10) чтобы получить результат
    const result = newNumber2 / 10; // 9.4
    
    console.log(result); // => 9.4
    Ответ написан
    Комментировать
  • Как удалить из всех строк символы. ,!? " ': ” “, если в таких строках есть блеклист слово?

    @VadimFilimonov
    const BLACK_LIST = ['красной', 'печали'];
    
    const TEXT = `
      Ах, я вспоминаю ясно, был тогда декабрь ненастный, 
      И от каждой вспышки красной тень скользила на ковер.
      Ждал я дня из мрачной дали, тщетно ждал, чтоб книги дали
      Облегченье от печали по утраченной Линор, 
      По святой, что там, в Эдеме ангелы зовут Линор,
      Безыменной здесь с тех пор.
    `;
    
    const rows = TEXT.split('\n');
    const normalizedRows = rows.map(row => {
      const shouldRemovePunctuationMarks = BLACK_LIST.some(forbiddenWord => {
        return row.includes(forbiddenWord);
      });
    
      if (shouldRemovePunctuationMarks) {
        const rowWithoutPunctuationMarks = row.replace(/[.,!?':”]/gi, '');
        return rowWithoutPunctuationMarks;
      }
    
      return row;
    });
    const normalizedText = normalizedRows.join('\n');
    
    console.log(normalizedText);
    Ответ написан
    Комментировать
  • Как навесить обработчик на коллекцию элементов 2?

    @VadimFilimonov
    // Ищем родителей
    const works = Array.from(document.querySelectorAll('.works-name'));
    
    // Для каждого из родителей
    works.forEach((item) => {
        // Вешаем обработчик
        item.addEventListener('click', (event) => {
            // Если пользователь кликнул именно на кнопку
            if (event.target.classList.contains('.work-header-arrow')) {
                // Меняем класс у самого родителя
                item.classList.toggle("active");
            }
        });
    });


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

    @VadimFilimonov
    function wrapHashtagsInText(text) {
        const words = text.split(' ');
        const processedWords = words.map((word) => {
            const isHashTag = word.startsWith('#');
    
            if (!isHashTag) {
                return word;
            }
    
            const hasWordPunctuationMarks = word.includes('?') || word.includes('!') || word.includes('.') || word.includes(',');
    
            if (!hasWordPunctuationMarks) {
                return `<span>${word}</span>`;
            }
    
            const punctuationMarkIndex = word.split('').findIndex((letter) => '?!,.'.includes(letter));
            const firstPartOfWord = word.slice(0, punctuationMarkIndex);
            const lastPartOfWord = word.slice(punctuationMarkIndex);
    
            return `<span>${firstPartOfWord}</span>${lastPartOfWord}`;
        });
    
        return processedWords.join(' ');
    }
    
    console.log(wrapHashtagsInText('My favourite language is #javascript because I love #frontend!'));
    // My favourite language is <span>#javascript</span> because I love <span>#frontend</span>!
    console.log(wrapHashtagsInText('Привет #user and #admin!!!'));
    // Привет <span>#user</span> and <span>#admin</span>!!!
    Ответ написан
    Комментировать
  • Как убрать дубликаты из массива?

    @VadimFilimonov
    const array = [1, 2, 4, 1, 4, 6, 2, 5];
    
    function method1(coll) {
      // так работает Set
      // https://learn.javascript.ru/map-set#set
      return [...new Set(coll)];
    }
    
    function method2(coll) {
      return coll.filter((currentItem, index) => {
        // indexOf находит первый попавшийся элемент и возвращает его индекс
        // когда цикл дойдет до 4-го элемента (единицы), то index будет равен 3-м, а indexOf найден единицу на 0-м элементе
        // результат сравнения будет false и элемент в результат не войдет
        return index === coll.indexOf(currentItem);
      });
    }
    
    function method3(coll) {
      // из массива создадим объект, т.к. в объекте не может быть двух одинаковых ключей
      const mapping = coll.reduce((accumulator, currentItem) => {
        // даже если значение уже есть - оно перезапишется
        accumulator[currentItem] = currentItem;
        return accumulator;
      }, {});
      // из полученного объекта создаем массив значений
      return Object.values(mapping);
    }
    
    console.log(method1(array)); // [1, 2, 4, 6, 5]
    console.log(method2(array)); // [1, 2, 4, 6, 5]
    console.log(method3(array)); // [1, 2, 4, 6, 5]
    Ответ написан
    Комментировать
  • Почему не выводится текcт через innerText?

    @VadimFilimonov
    inn_1.innerText = vPr1
    Переменная inn_1 не задана
    Ответ написан
    Комментировать
  • Заблокировать input?

    @VadimFilimonov
    HTML
    <form>
      <input required>
      <button>Сохранить</button>
    </form>


    JavaScript
    const form = document.querySelector('form');
    const input = form.querySelector('input');
    
    form.addEventListener('submit', (event) => {
      event.preventDefault();
      input.disabled = true;
    });


    https://jsfiddle.net/br2uLj6t/
    Ответ написан
    Комментировать
  • Правильно ли решена задача создания шахматной доски в консоли?

    @VadimFilimonov
    const SIZE = 8;
    
    function isEven(number) {
    	return number % 2 === 0;
    }
    
    function getCeil(row, column) {
    	if (isEven(row) === isEven(column)) return '#';
      return ' ';
    }
    
    for (let row = 0; row < SIZE; row += 1) {
    	let string = '';
      for (let column = 0; column < SIZE; column += 1) {
        string += getCeil(row, column);
      }
      console.log(string);
    }
    Ответ написан
    Комментировать
  • Одно модальное окно в другом?

    @VadimFilimonov
    • 2-е окно находится внутри 1-го
    • когда 1-му окну задается display: none; - 2-е тоже будет скрыто, т.к. оно внутри 1-го.
    Ответ написан
    Комментировать
  • Как сделать чекбоксы в две колонки?

    @VadimFilimonov
    В HTML ошибка на строке 59.
    Лишняя буква "t" в названии класса:
    checkboxes__item-hiddent

    Если убрать - получится вот так:
    https://jsfiddle.net/cvz2uq16/
    Ответ написан