-
天涯尽头无女友
参见文章:在JavaScript和jQuery中转置数组function transpose(a) { // Calculate the width and height of the Array var w = a.length || 0; var h = a[0] instanceof Array ? a[0].length : 0; // In case it is a zero matrix, no transpose routine needed. if(h === 0 || w === 0) { return []; } /** * @var {Number} i Counter * @var {Number} j Counter * @var {Array} t Transposed data is stored in this array. */ var i, j, t = []; // Loop through every item in the outer array (height) for(i=0; i<h; i++) { // Insert a new row (array) t[i] = []; // Loop through every item per item in outer array (width) for(j=0; j<w; j++) { // Save transposed data. t[i][j] = a[j][i]; } } return t;}console.log(transpose([[1,2,3],[4,5,6],[7,8,9]]));
-
波斯汪
DuckDucking打开了这个由肯。令人惊讶的是,它比尼基塔的答案更加简洁和完整。它在内核中隐式检索列和行长度map()。function transpose(a) { return Object.keys(a[0]).map(function(c) { return a.map(function(r) { return r[c]; }); });}console.log(transpose([ [1,2,3], [4,5,6], [7,8,9]]));
-
潇湘沐
就像任何其他语言一样:int[][] copy = new int[columns][rows];for (int i = 0; i < rows; ++i) { for (int j = 0; j < columns; ++j) { copy[j][i] = original[i][j]; }}您只需在JS中以不同方式构造2D数组。像这样:function transpose(original) { var copy = []; for (var i = 0; i < original.length; ++i) { for (var j = 0; j < original[i].length; ++j) { // skip undefined values to preserve sparse array if (original[i][j] === undefined) continue; // create row if it doesn't exist yet if (copy[j] === undefined) copy[j] = []; // swap the x and y coords for the copy copy[j][i] = original[i][j]; } } return copy;}console.log(transpose([ [1,2,3], [4,5,6], [7,8,9]]));