여기에 많은 좋은 답변이 있습니다! 나는 그것들을 하나의 답변으로 통합하고보다 현대적인 구문을 위해 코드를 업데이트했습니다.
Fawad Ghafoor 와 Óscar Gómez Alcañiz에서 영감을 얻은 원 라이너
function transpose(matrix) {
return matrix[0].map((col, i) => matrix.map(row => row[i]));
}
function transpose(matrix) {
return matrix[0].map((col, c) => matrix.map((row, r) => matrix[r][c]));
}
Andrew Tatomyr의 Reduce를 사용한 기능적 접근 방식
function transpose(matrix) {
return matrix.reduce((prev, next) => next.map((item, i) =>
(prev[i] || []).concat(next[i])
), []);
}
에 의해 Lodash / 밑줄 마르셀
function tranpose(matrix) {
return _.zip(...matrix);
}
// Without spread operator.
function transpose(matrix) {
return _.zip.apply(_, [[1,2,3], [1,2,3], [1,2,3]])
}
바닐라 접근
function transpose(matrix) {
const rows = matrix.length, cols = matrix[0].length;
const grid = [];
for (let j = 0; j < cols; j++) {
grid[j] = Array(rows);
}
for (let i = 0; i < rows; i++) {
for (let j = 0; j < cols; j++) {
grid[j][i] = matrix[i][j];
}
}
return grid;
}
Emanuel Saringan에서 영감을 얻은 바닐라 인플레 이스 ES6 접근 방식
function transpose(matrix) {
for (var i = 0; i < matrix.length; i++) {
for (var j = 0; j < i; j++) {
const temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
// Using destructing
function transpose(matrix) {
for (var i = 0; i < matrix.length; i++) {
for (var j = 0; j < i; j++) {
[matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]];
}
}
}
arrayLength
정확히 사용되는 파라미터 는 무엇입니까 ? 배열의 특정 요소 수를 초과하지 않도록하려면?