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()
.
我有一个这样的数组:
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()
.