bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ

Объединить два цикла по условию?

Господа, подскажите пожалуйста. Можно ли как-то сделать, что бы объединить 2 внутренних цикла в один, если нечетный элемент тогда нужно цикл запускать с конечного значения, если четный с начального.

const arr = [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]];

const result = [];
for (let i = 0; i < arr.length; ++i) {
  if (i % 2) {
    for (let j = 0; j < 3; ++j) result.push(arr[i][j]);
  } else {
    for (let j = 2; j >= 0; --j) result.push(arr[i][j]);
  }
}

console.log(result);


Спасибо.
  • Вопрос задан
  • 565 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Не надо ничего объединять, нет необходимости использовать циклы в явном виде:

const result = arr.reduce((acc, n, i) => (
  acc.push(...(i & 1 ? n : [...n].reverse())),
  acc
), []);

Если всё-таки нужны именно вложенные циклы, то

for (let i = 0; i < arr.length; ++i) {
  const a = i & 1 ? arr[i] : [...arr[i]].reverse();
  for (let j = 0; j < a.length; ++j) {
    result.push(a[j]);
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы