2017-12-11 18 views
-3

Iまし間違ってフォーマットされた2次元配列は、以下のようなもの:私はそれは次のように変換したいJavascriptが2次元配列の新しい2次元配列を作成

[['a','b','c'],['d','f','e'],['g','h','i']] 

[['a','d','g'],['b','f','h'],['c','e','i']] 

これには最高の方法は何ですか?私は解決策を見つけることができません。

+0

ですか? –

答えて

1

この方法をお試しください。さらに動的なコードを追加するためにArray.from({length: array.length}, (value, key) => key)を追加しました。

const array = [['a','b','c'],['d','f','e'],['g','h','i']]; 
 

 
const mapped = array.map((item, index, arr) => Array.from({length: array.length}, (value, key) => key).map(i => arr[i][index])); 
 

 
console.log(mapped);

+0

これは私のために働く –

+0

@RalphJanssenそれがうまくいくならば、答えを受け入れて他人に知らせる – pfg

0

あなたは新しい結果のためにインデックスを交換することにより、配列をtransposteことができます。

var array =[['a','b','c'],['d', 'f', 'e'], ['g', 'h', 'i']], 
 
    result = array.reduce(function (r, a, i) { 
 
     a.forEach(function (v, j) { 
 
      (r[j] = r[j] || [])[i] = v; 
 
     }); 
 
     return r; 
 
    }, []); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0
a=[['a','b','c'],['d','f','e'],['g','h','i']] 

// initialising b 
b= [['a','b','c'],['d','f','e'],['g','h','i']] 

//Talking transpose 
for(i =0;i<3;i++){ 
    for(j=0;j<3;j++){ 
     b[i][j] = a[j][i]; 
    } 
} 
0

ダブルマップ1つのライナーソリューション。外側の配列の長さを想定しており、内側の配列の長さは、あなたが文字を交換したいものを根拠に同じ

var data = [['a','b','c'],['d','f','e'],['g','h','i']] 
 

 
var res= data.map((a, i) => data.map((arr)=>arr[i])); 
 

 
console.log(res)