JavaScript

Как упростить этот код (цикл for)?

Там, где находятся чётные и нечётные числа диапазона. Как написать это короче с помощью цикла for?

______________________________________________________________________________
Num1 = +prompt("Введите начало диапазона");;
num2 = +prompt("Введите начало диапазона");;

if (num1 > num2) {
start = num2;
end = num1;
}
else if (num2 > num1) {
start = num1;
end = num2;
} else {
start = num1;
end = num1;
}

for (i = start; i <= end; i++) {
console.log("i = " + i);
}

if (start % 2 == 0) {
for (i = start; i <= end; i = i + 2) {
console.log("Чётные числа в диапазоне - " + i);
}
for (k = start + 1; k <= end; k = k + 2) {
console.log("Нечётные числа в диапазоне - " + k);
}
}

if (start % 2 != 0) {
for (i = start; i <= end; i = i + 2) {
console.log("Нечётные числа в диапазоне - " + i);
}
for (k = start + 1; k <= end; k = k + 2) {
console.log("Чётные числа в диапазоне - " + k);
}
}
D@
Dima @@@@
24 388
num1 = +prompt("Введите начало диапазона");
num2 = +prompt("Введите конец диапазона");

if (num1 > num2) {
start = num2;
end = num1;
}
else if (num2 > num1) {
start = num1;
end = num2;
} else {
start = num1;
end = num1;
}

/// вместо всего того что у вас идет дальше делаем так
// только в конце будет вылезать на одно число за диапазон или наоборот не влезать, но дело поправимое, что-нибудь придумаю

if (start % 2 == 0) {
first = 'четное ';
second = 'нечетное ';
} else {
first = 'нечетное ';
second = 'четное ';
}
for (i = start; i <= end; i += 2) {
console.log(first + i);
console.log(second + (i + 1));
}

// чтобы конец диапазона был правильный можно делать что-то такое
if (start % 2 != 0 && end % 2 != 0) {console.log('нечетное ', end)}
//если не влезает последнее четное - делаем такой же вариант для четного
Ахмет Латыпов
Ахмет Латыпов
89 866
Лучший ответ
Ахмет Латыпов Чтобы последняя строка работала правильно цикл должен быть таким
for (i = start; i < end; i += 2) {
console.log(first + i);
console.log(second + (i + 1));
}
if (start % 2 != 0 && end % 2 != 0) {console.log('нечетное ', end)}
const [start, end] = [num1, num2].sort()
const numbers = new Array(end - start + 1).fill(0).map((_,i)=> start + i);
const oddNumbers = numbers.filter(n => n % 2);
console.log(oddNumbers.join(', '));
Юра Брусенцев
Юра Брусенцев
57 257
там нужен один цикл остальные лишние так как если чесло не четное то оно точно будет нечётным т е не нужно проверять сто раз. одним циклом бегаешь по диапазону и проверяешь если остаток от деления нацело = ноль то это четное иначе не четное, все
Alt + f4