Здравствуйте, можете пожалуйста помочь с решением и разъяснить почему моё решение не работает?

let min = parseInt(prompt("Start range: ") < 100);

var numbers = []
for (var i = min; i <= 100; i++) {
    let rest = i % 5;

    if (rest === 2 || 3) {
        console.log('Shared with the remainder');
    } else {
        console.log("No any number")
    }
}

Мне нужно вывести все числа между X и Y, которые при делении на 5 дают остаток равный 2 или 3. Если таких чисел не нашлось, то вывести “No any number”. X у меня это переменная min, а максимум по условию 100, поэтому не прошу пользователя его задать

Можете пожалуйста помочь с решением и если не сложно, то объяснить его?


Ответы (2 шт):

Автор решения: Алексей Шиманский
rest === 2 || 3

Это невалидная конструкция. В программировании (во всяком случае в JS) такое не работает. Правильно писать

rest === 2 || rest === 3

т.е. каждое условие писать отдельно, разделяя знаком логического условия

→ Ссылка
Автор решения: Алексей Р
  1. Строка let min = parseInt(prompt("Start range: ") < 100); некорректная.
  2. Строка var numbers = [] - лишняя (переменная не используется)
  3. Строку console.log("No any number") надо вынести за цикл и добавить признак положительного сравнения с остатками (например, has_any).
  4. Для сравнения можно также использовать массив и includes() (или множество и has()). Это удобно, когда сравниваемых значений много.

let min = Math.min(parseInt(prompt("Start range: "), 10), 99);
let has_any = false;
let remainders = [2, 3];

for (let i = min; i <= 100; i++) {
    let rest = i % 5;
    if (remainders.includes(rest)) {
        console.log(`${i} Shared with the remainder ${remainders}`);
        has_any = true;
    }
}
if (!has_any) console.log("No any number")

→ Ссылка