向右和向上移动矩阵3x3阵列

时间:2016-11-09 15:57:57

标签: javascript

我已经从1-9

创建矩阵3x3
var data = ["1", "2", "3", "4", "5", "6", "7", "8", "9" ];

var i = 0;
for (var r = 0; r < 3; r++) {
  document.write('<br>');
  for (var c = 0; c < 3; c++) {
    document.write(data[i++]);
    document.write('&nbsp');
  }
}

结果将是:

1 2 3
4 5 6
7 8 9

如何使矩阵向右然后向上移动

3 1 2    6 4 5
6 4 5    9 7 8
9 7 8    3 1 2

我知道像拼接等等,但我对如何实现它感到困惑:( 谢谢! :)

2 个答案:

答案 0 :(得分:0)

您可以通过将旧矩阵的元素按照完成翻译所需的顺序转录到新矩阵中来实现。

移动右:

int i = 0;
for (var r = 0; r < 3; r++) {
    for (var c = 1; c < 3+1; c++) {
        newData[i++] = data[3*r+c%3];
    }
}

移动式:

int i = 0;
for (var r = 1; r < 3+1; r++) {
    for (var c = 0; c < 3; c++) {
        newData[i++] = data[3*(r%3)+c];
    }
}

整个技巧由数据索引中的表达式执行,使用模数从1开始计数并回绕到0。

答案 1 :(得分:0)

您可以在一个循环中计算新索引。

&#13;
&#13;
var data = ["1", "2", "3", "4", "5", "6", "7", "8", "9" ],
    result = [];

data.forEach(function (a, i, aa) {
    result[(i % 3 + 1) % 3 + ((Math.floor(i /3) + 2) % 3) * 3] = a;
});

console.log(result);
&#13;
&#13;
&#13;