Здравствуйте, можете пожалуйста помочь с решением и разъяснить почему моё решение не работает?
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
т.е. каждое условие писать отдельно, разделяя знаком логического условия
Автор решения: Алексей Р
→ Ссылка
- Строка
let min = parseInt(prompt("Start range: ") < 100);некорректная. - Строка
var numbers = []- лишняя (переменная не используется) - Строку
console.log("No any number")надо вынести за цикл и добавить признак положительного сравнения с остатками (например,has_any). - Для сравнения можно также использовать массив и
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")