【问题标题】:I don't understand why this function's output is one我不明白为什么这个函数的输出是一
【发布时间】:2020-03-15 12:16:54
【问题描述】:

这是一个用于移动 (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。

【问题讨论】:

  • 我看到的输出是:Uncaught ReferenceError: arr1 is not defined你能提供一个可运行的代码sn-p来演示这个问题吗?
  • 删除前两个returns。
  • @Igor 谢谢先生。但是,结果数组有 12 个条目长,并且条目不是按预期顺序排列的。我想我可以解决这个问题,但任何建议都会有所帮助。

标签: javascript arrays for-loop matrix


【解决方案1】:

解决办法

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

【讨论】:

    【解决方案2】:

    可能的解决方案:

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

    【讨论】:

      猜你喜欢
      • 2020-12-18
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 2023-03-16
      • 2022-12-14
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      相关资源
      最近更新 更多