我有以下数组:
array = [[[1,2],[4,5]],[[6,7],[8,9]]];
我希望得到以下结果:
easyArray = [[[2,1],[5,4]],[[7,6],[9,8]]];
我试过
function swapCoordinates(array){
var a=0;
var b=0;
for (j=0;j<array[0].length;j++){
for (k=0;k<array[0][0].length;k++){
var swap = array[a][b][0];
array[a][b][0] = array[a][b][1];
array[a][b][1] = swap
console.log(a);
a++;
console.log(b);
}
console.log(a);
console.log(b);
b++
}
return array;
}
问题在于,我不知道如何正确地增加b以获得例如array [1,0,0] ...
我做错了什么?
答案 0 :(得分:1)
您可以通过检查项是否是包含其他数组的数组来使用递归方法。
然后映射数组或返回交换项。
var array = [[[1, 2], [4, 5]], [[6, 7], [8, 9]]],
swapped = array.map(function swap(a) {
return Array.isArray(a) && Array.isArray(a[0])
? a.map(swap)
: a.slice().reverse();
});
console.log(swapped);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
您可以执行以下操作;
var array = [[[1,2],[4,5]],[[6,7],[8,9]]],
swap3D = ([e0,e1,...es]) => e0 ? Array.isArray(e0) ? [swap3D(e0)].concat(swap3D([e1,...es]))
: [e1,e0]
: [],
result = JSON.stringify(swap3D(array));
console.log(result);