Печать шаблонов чисел в JavaScript

Nov 05 2020

Я хочу напечатать числа в шаблоне, как показано ниже, также мне нужно это для печати, используя только один цикл for, а не условие if внутри цикла for.

Если я дам s = 7шаблон вывода, будет7, 5, 3, 1, 3, 5, 7

Если s=6тогда вывод6, 4, 2, 4, 6

Это то, что я пробовал, но безуспешно.

const s = 7, b = 2

for (x = s, d = b; x > 0 && x <= 7; x -= 2) {
  console.log(x)
}

Я не хочу использовать для этого какие-либо предварительно созданные библиотеки, например Math.abs()

Ответы

1 maraca Nov 05 2020 at 07:32

С тернарным оператором:

const s = 10, b = 2

for (x = s, step = -b; x <= s; step = x + step <= 0 ? -step : step, x += step) {
  console.log(x)
}

1 ShridharRKulkarni Nov 05 2020 at 07:12

var s = 7, b = 2, x, d;
var front = " ", back = " ";

for (x = s, d = b; x - b > 0 ; x -= b) {
    front = front + " " + x; 
    back = x + " " + back;
}
console.log(front + " " + x + " " + back);

TejaGoudKandula Nov 05 2020 at 08:18

Это работает как для четных, так и для нечетных чисел:

const s = 8, b = 2

for (x=s,step = b; x <=s ; (x===1 || x===2) ? (step = -b, x = x-step ): x= x-step) {
    console.log(x)
}

Что я сделал, так это то, что в блоке увеличения / уменьшения, когда x равно 1 для нечетных чисел или когда x равно 2 для четных чисел, шаг изменяется с положительного на отрицательный.

Чтобы распечатать числа в порядке возрастания:

const s = 10

for ( x=0,step=1; x!== -1 ; x===s ? (step = -1, x = x+step): x= x+step) {
    console.log(x)
}