简体   繁体   English

我不明白为什么这个函数的输出是一个

[英]I don't understand why this function's output is one

This a code a made to move rows in a (3*3) matrix.这是一个用于在 (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;
}

Expected output (in an array) :预期输出(在数组中):


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

When I log arrtY in the console I only see 1.当我在控制台中登录 arrtY 时,我只看到 1。

Here's a solution这是一个解决方案

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;
}

Possible solution:可能的解决方案:

 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))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM