Я не понимаю, почему вывод этой функции один - PullRequest
0 голосов
/ 15 марта 2020

Этот код предназначен для перемещения строк в (3 * 3) матрице.

const transY =(arr)=> {
    const arrtY = []; 
    for (let i = 1; i < 4; i++) {
        for (let j = 0; j < 3; j++) {
            if (i==3) {
                return arrtY.unshift(arr[3*0+j]);
            }
            return arrtY.push(arr[3*i+j]);
        }
    }
    return arrtY;
}

Ожидаемый вывод (в массиве):


1  2  3       7  8  9       4  5  6
4  5  6  ==>  1  2  3  ==>  7  8  9 ==>  [...]
7  8  9       4  5  6       1  2  3

Когда я регистрирую arrtY в консоли вижу только 1.

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Возможное решение:

function transform(arr) {
  var res = [];
  for(var i = 6; res.length < 9; i = (i + 1) % 9)
    res.push(arr[i]);
  return res;
}

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(JSON.stringify(arr))
arr = transform(arr);
console.log(JSON.stringify(arr))
arr = transform(arr);
console.log(JSON.stringify(arr))
0 голосов
/ 15 марта 2020

Вот решение

const transY =(arr)=> {
    const arrtY = []; 
    function rowpush(i) {
        for (let j = 0; j < 3; j++) {
            arrtY.push(arr[3*i+j]);
        }
    }
    rowpush(2);
    rowpush(0);
    rowpush(1);
    return arrtY;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...