题目描述
思路分析
说到底就是翻转90°二维数组
翻转方法一:利用空数组赋值的操作
function transposeArray(matrix, matrixLength){
var newMatrix = [];
for(var i = 0; i < matrix.length; i++){
newMatrix.push([]);
};
for(var i = 0; i < matrix.length; i++){
for(var j = 0; j < matrixLength; j++){
newMatrix[j].push(array[i][j]);
};
};
return newMatrix;
}
翻转方法二:利用zip的操作
//js中的zip()函数用于从作为参数给出的数组中形成矩阵。它有助于可视化数据
function tranpose(matrix) {
return _.zip(...matrix);
}
翻转方法三:利用数组reduce的操作
function transpose(matrix) {
return matrix.reduce((prev, next) => next.map((item, i) =>
(prev[i] || []).concat(next[i])
), []);
}
翻转方法四:利用数组map的操作
function transpose(matrix) {
return matrix[0].map((col, c) => matrix.map((row, r) => matrix[r][c]));
}
代码解析
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function(matrix) {
var n = [];
while(matrix.length){
n = _.concat(n,matrix.shift())
matrix = _.reverse(_.zip(...matrix))
}
return n
};
后话
只是记录,正在找工作中,各位老板缺前端的可以私信,会vue,react,ts,js,22届本科毕业,一年工作经验