溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript旋轉二維數組的方法

發布時間:2022-04-27 10:45:54 來源:億速云 閱讀:295 作者:iii 欄目:開發技術

JavaScript旋轉二維數組的方法

在編程中,旋轉二維數組是一個常見的操作,尤其是在處理圖像、矩陣變換等場景時。本文將詳細介紹如何使用JavaScript來實現二維數組的旋轉操作,包括順時針旋轉90度、180度和270度,以及逆時針旋轉90度。

1. 二維數組的基本概念

二維數組是一個數組的數組,通常用于表示矩陣或表格數據。例如,一個3x3的二維數組可以表示為:

let matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

在這個數組中,matrix[0]表示第一行,matrix[0][0]表示第一行第一列的元素。

2. 順時針旋轉90度

順時針旋轉90度意味著將數組的行變為列,并且列的順序反轉。例如,將上面的3x3數組順時針旋轉90度后,結果應該是:

[
  [7, 4, 1],
  [8, 5, 2],
  [9, 6, 3]
]

實現方法

我們可以通過以下步驟來實現順時針旋轉90度:

  1. 將數組的行變為列。
  2. 反轉每一列的順序。

具體實現代碼如下:

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列。

3. 逆時針旋轉90度

逆時針旋轉90度與順時針旋轉90度類似,但方向相反。例如,將上面的3x3數組逆時針旋轉90度后,結果應該是:

[
  [3, 6, 9],
  [2, 5, 8],
  [1, 4, 7]
]

實現方法

我們可以通過以下步驟來實現逆時針旋轉90度:

  1. 將數組的行變為列。
  2. 反轉每一行的順序。

具體實現代碼如下:

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列。

4. 旋轉180度

旋轉180度意味著將數組的行和列都反轉。例如,將上面的3x3數組旋轉180度后,結果應該是:

[
  [9, 8, 7],
  [6, 5, 4],
  [3, 2, 1]
]

實現方法

我們可以通過以下步驟來實現旋轉180度:

  1. 反轉每一行的順序。
  2. 反轉整個數組的順序。

具體實現代碼如下:

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列。

5. 旋轉270度

旋轉270度相當于順時針旋轉90度的逆操作。例如,將上面的3x3數組旋轉270度后,結果應該是:

[
  [3, 6, 9],
  [2, 5, 8],
  [1, 4, 7]
]

實現方法

我們可以通過以下步驟來實現旋轉270度:

  1. 將數組的行變為列。
  2. 反轉每一列的順序。

具體實現代碼如下:

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列。

6. 總結

本文詳細介紹了如何使用JavaScript來實現二維數組的旋轉操作,包括順時針旋轉90度、180度和270度,以及逆時針旋轉90度。通過這些方法,我們可以輕松地處理各種矩陣變換問題。希望本文對你有所幫助!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女