jQuery - 如何反转数组格式?

jQuery - how to reverse array format?

我有一个这样的数组:

var test = [
             [1,1,1],
             [0,1,1],
             [0,0,0],
             [0,0,0]
           ];

我想知道如何从底部开始:

var test = [
             [0,0,0,1],
             [0,0,1,1],
             [0,0,1,1]
           ];

我试过这个例子

var ReverseArray = [];
var length = test.length;
for(var i = length-1;i>=0;i--){
   ReverseArray.push(test[i]);
}

但我得到了这个:

[
  [0,0,0],
  [0,0,0],
  [0,1,1],
  [1,1,1]
];

这不是我要找的。有人有好的建议吗?谢谢 :)

不幸的是,我认为旋转矩阵没有任何漂亮的 javascript 技巧,但下面仍然是一种非常干净的方法:

let cols = [], reversed = test.reverse();
for(let i = 0; i < reversed[0].length; i++)
    cols.push(reversed.map(row=> row[i]));

cols 应该是所需配置的矩阵。 demo

您显示的代码实际上反转输入,但您想要的输出是旋转,而不是反转。

这是一种使用一行代码即可完成此操作的方法:

var test = [
             [1,1,1],
             [0,1,1],
             [0,0,0],
             [0,0,0]
           ];

var output = test[0].map((_,i) => test.map(a => a[i]).reverse());

console.log(output);

或不带 arrow functions 的相同内容(如果您使用的是 IE),其格式可能更容易理解:

var output = test[0].map(function(_,i) {
  return test.map(function(a) { return a[i] }).reverse();
});

假设外部数组至少有一个条目,并且所有内部数组的长度相同。

(Edit) 请注意,使用普通循环会更有效,因为您可以向后循环而不是必须调用 .reverse().