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

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Переименовать одну из них, как вариант)
    Ответ написан
    Комментировать
  • Как вывести значения из переменных в массив?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Не совсем понятен вопрос. Твоя функция на данный момент определяет последний положительный элемент массива и считает сумму неположительных (отрицательные и 0).

    А выводит она 2, т.к push - возвращает длину массива. В массиве у тебя будут лежать: последний положительный элемент и сумма неположительных. А длина возвращается у тебя из функции.
    https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Ответ написан
    Комментировать
  • Как правильно обращаться?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Ну если Вы опубликуете его, как npm-пакет, то Вам же все равно нужно будет его подключить в Ваш модуль, как библиотеку. Поэтому его будет нужно так же импортировать по типу:
    import { msg } from '<file-name>

    Если хотите без фигурных скобок, то экспорт функции делайте через export default. Тогда можно будет обращаться так:
    import msg from '<file-name>'

    Здесь неплохо расписано про import: https://learn.javascript.ru/import-export
    Ответ написан
  • Как расположить точки на окружности?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Не уверен, но мне кажется, что здесь то, что тебе нужно https://ru.stackoverflow.com/questions/791246/%D0%...
    Ответ написан
    Комментировать
  • Функция должна проверять, какие числа четные, объясните почему не работает?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Ваша функция не проверяет, какие числа четные - она отвечает на вопрос, все ли числа массива четные
    Если нужно вывести четные числа, то попробуйте хотя бы так:
    const isEven = (arr) => {
      for (const num of arr) {
        if (num % 2 === 0) {
          console.log(num);
        }
      }
    };
    Ответ написан
    5 комментариев
  • Почему цикл while останавливается?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    У Вас условие в цикле: выполняется до тех пор, пока num не является числом. Внутри цикла вы меняете num на числовой тип данных, вот он у Вас больше в него и не заходит.
    Попробуйте поменять на такой, чтобы в него сначала зайти
    do {
      // Какая то логика 
    } while (typeof num === 'number');
    Ответ написан
    Комментировать
  • Как найти сумму свойств вложенных объектов?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Можно решить многими способами, предлагаю такой:
    const sum = Object.values(object)
      .reduce((acc, value) => {
        const nums = Object.values(value); // Здесь массивы из чисел для каждого ключа
        acc += nums.reduce((acc, num) => acc += num, 0);
        return acc;
      }, 0);
    Ответ написан
  • Как написать функцию на JS которая выводит все совершенные числа во введенном диапазоне?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Можешь написать так:
    // Проверяет, является ли число простым
    const isPrime = (num) => {
      let divisor = 2;
      while (divisor <= Math.sqrt(num)) {
        if (num % divisor === 0) {
          return false;
        }
        divisor += 1;
      }
      return true;
    }
    
    // Выводит совершенные числа в консоль
    const perfectNumbers = (start, limit) => {
      for (let i = start; i <= limit; i += 1) {
        if (isPrime((2 ** i) - 1)) {
          const num = ((2 ** i) - 1) * 2 ** (i - 1);
          console.log(num);
        }
        continue;
      }
    };
    Ответ написан
    Комментировать
  • Как удалить гласные в строке?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Пропиши вот так: str =str.replace(/[aeiou]/gi, '');
    Ответ написан
    2 комментария
  • Какие могут возникнуть сложности при использовании new Set?

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

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Когда ты пытаешься поменять внутри цикла каждое значение элемента, типа:
    elem = elem ** 2
    ты по факту меняешь само число. Это все равно, что сказать 2 является 4. Невозможно изменить числовой тип данных в JS, так как они иммутабельны (то бишь неизменяемые). Нужно менять значения по ключу (в случае массивов - по индексу), так как тогда ты не пытаешься изменить само число, а меняешь значения в массиве, которое просто располагается под определенным индексом. По этому и возникает ошибка. Обращайся к значениям по индексу типа:
    const collection = [1, 2, 3, 4, 5];
    for (let i in collection) {
      collection[i] = collection[i] ** 2;
    }
    console.log(collection); // [1, 4, 9, 16, 25]
    Ответ написан
    Комментировать
  • Почему не выдает ошибку?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Не знаю, насколько для Вас это еще актуально, но если прописать вот так, то можно увидеть, что он
    просто не доходит до x, так как у Вас после вывода в консоль стоит break.
    let f = true
    let r = true
     
    
    switch (f) {
      case r:
        console.log('r');
        break;
      case x: {
        console.log('x');
        break;
      }
      default:
        console.log('I am right here');
    }
    Ответ написан
    Комментировать
  • Как работает функция?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Ты все правильно понял)) Лучше и не осмыслить
    Ответ написан
    Комментировать
  • Можно ли обратиться к свойству объекта как к параметру функции?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Вместо точки используй скобки и все будет работать.
    const rome = (number) => {
      const object = {
        x: 10, 
        xv: 15,
      };
      return object[number];
    }
    Ответ написан
    Комментировать
  • Когда применять arr.reduce?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Вы правы, reduce может делать и отображение и фильтрацию. Но в основном данную функцию применяют, когда при проходе коллекции нужно собрать определенный результат. Причем неважно какой: это может быть другой массив или объект, а может быть и примитивный тип данных типа строка или число. Все зависит от задачи
    Как правильно писали выше, самый яркий пример и одновременно простой пример - нахождение суммы всех элементов массива. Вы делаете агрегацию - то есть приведение целой системы к одному результату.

    [1, 2, 3, 4, 5].reduce((acc, item) => acc += item, 0); // 15
    Ответ написан
    Комментировать
  • FizzBuzz, объясните почему одно работает другое нет?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Если речь идет о втором куске кода, то вы в условии if переопределяете переменную num, которая у Вас является счетчиком и после этого ваш цикл слетает, так как переменная num больше не является числовым типом данных.
    var num = 1 // Здесь вы задаете переменную num
     for (i=100; num < i ; num++){
         if(num%3===0){
            num = 'fiz' // Здесь вы ее переопределяете 
            console.log(num)
         }
      console.log(num)  
    };


    У вас выводится
    1
    2
    fiz
    fiz

    и дальше цикл слетает
    Будьте осторожными при работе с переменными в глобальной области видимости. Если уж хотите переопределять переменные, то воспользуйтесь лучше их разделить хотя бы так. Хотя это уж прям совсем искусственный пример
    let outerNum = 1;
    for(let i = 100; outerNum < i; outerNum++) {
      let innerNum;
      if (outerNum % 3 === 0) {
        innerNum = 'fizz';
        console.log(innerNum);
      }
      console.log(outerNum);
    }
    Ответ написан
    Комментировать