在編程中,旋轉二維數組是一個常見的操作,尤其是在處理圖像、矩陣變換等場景時。本文將詳細介紹如何使用JavaScript來實現二維數組的旋轉操作,包括順時針旋轉90度、180度和270度,以及逆時針旋轉90度。
二維數組是一個數組的數組,通常用于表示矩陣或表格數據。例如,一個3x3的二維數組可以表示為:
let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
在這個數組中,matrix[0]
表示第一行,matrix[0][0]
表示第一行第一列的元素。
順時針旋轉90度意味著將數組的行變為列,并且列的順序反轉。例如,將上面的3x3數組順時針旋轉90度后,結果應該是:
[
[7, 4, 1],
[8, 5, 2],
[9, 6, 3]
]
我們可以通過以下步驟來實現順時針旋轉90度:
具體實現代碼如下:
function rotate90Clockwise(matrix) {
const n = matrix.length;
const rotated = new Array(n).fill().map(() => new Array(n).fill(0));
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
rotated[j][n - 1 - i] = matrix[i][j];
}
}
return rotated;
}
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
console.log(rotate90Clockwise(matrix));
new Array(n).fill().map(() => new Array(n).fill(0))
:創建一個新的n x n的二維數組,初始值為0。rotated[j][n - 1 - i] = matrix[i][j]
:將原數組的第i行第j列的元素放到新數組的第j行第n-1-i
列。逆時針旋轉90度與順時針旋轉90度類似,但方向相反。例如,將上面的3x3數組逆時針旋轉90度后,結果應該是:
[
[3, 6, 9],
[2, 5, 8],
[1, 4, 7]
]
我們可以通過以下步驟來實現逆時針旋轉90度:
具體實現代碼如下:
function rotate90CounterClockwise(matrix) {
const n = matrix.length;
const rotated = new Array(n).fill().map(() => new Array(n).fill(0));
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
rotated[n - 1 - j][i] = matrix[i][j];
}
}
return rotated;
}
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
console.log(rotate90CounterClockwise(matrix));
rotated[n - 1 - j][i] = matrix[i][j]
:將原數組的第i行第j列的元素放到新數組的第n-1-j
行第i列。旋轉180度意味著將數組的行和列都反轉。例如,將上面的3x3數組旋轉180度后,結果應該是:
[
[9, 8, 7],
[6, 5, 4],
[3, 2, 1]
]
我們可以通過以下步驟來實現旋轉180度:
具體實現代碼如下:
function rotate180(matrix) {
const n = matrix.length;
const rotated = new Array(n).fill().map(() => new Array(n).fill(0));
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
rotated[n - 1 - i][n - 1 - j] = matrix[i][j];
}
}
return rotated;
}
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
console.log(rotate180(matrix));
rotated[n - 1 - i][n - 1 - j] = matrix[i][j]
:將原數組的第i行第j列的元素放到新數組的第n-1-i
行第n-1-j
列。旋轉270度相當于順時針旋轉90度的逆操作。例如,將上面的3x3數組旋轉270度后,結果應該是:
[
[3, 6, 9],
[2, 5, 8],
[1, 4, 7]
]
我們可以通過以下步驟來實現旋轉270度:
具體實現代碼如下:
function rotate270(matrix) {
const n = matrix.length;
const rotated = new Array(n).fill().map(() => new Array(n).fill(0));
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
rotated[n - 1 - j][i] = matrix[i][j];
}
}
return rotated;
}
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
console.log(rotate270(matrix));
rotated[n - 1 - j][i] = matrix[i][j]
:將原數組的第i行第j列的元素放到新數組的第n-1-j
行第i列。本文詳細介紹了如何使用JavaScript來實現二維數組的旋轉操作,包括順時針旋轉90度、180度和270度,以及逆時針旋轉90度。通過這些方法,我們可以輕松地處理各種矩陣變換問題。希望本文對你有所幫助!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。