JS二維數組排序詳解

一、JS二維數組排序sort

在JS中,可以使用sort方法來對一維數組進行排序,而對於二維數組,我們只需要稍作修改即可。sort方法需要傳入一個函數作為參數,函數的返回值決定了數組的排序順序。

// 二維數組按第一列排序
var arr = [
  [3, 2, 1],
  [6, 5, 4],
  [9, 8, 7]
];
arr.sort(function(a, b) {
  return a[0] - b[0];
});
console.log(arr);
// 輸出:[[3, 2, 1], [6, 5, 4], [9, 8, 7]]

在上面的代碼中,我們按照二維數組的第一列進行升序排序。其中,參數a和b分別代表當前比較的兩個數組。

二、JS二維數組轉置

在很多應用場景中,需要將二維數組的行和列進行互換,即進行轉置操作。我們可以通過遍歷二維數組,創建一個新的數組來實現轉置。

var arr = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
var res = [];
for (var i = 0; i < arr[0].length; i++) {
  res[i] = [];
  for (var j = 0; j < arr.length; j++) {
    res[i][j] = arr[j][i];
  }
}
console.log(res);
// 輸出:[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

三、JS二維數組排序方法sort

除了使用sort方法外,我們還可以使用數組排序方法來對二維數組進行排序。這裡我們使用冒泡排序作為例子。

function sort(arr, col) {
  for (var i = 0; i < arr.length - 1; i++) {
    for (var j = 0; j  arr[j + 1][col]) {
        var temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
  return arr;
}
var arr = [
  [3, 2, 1],
  [6, 5, 4],
  [9, 8, 7]
];
console.log(sort(arr, 0));
// 輸出:[[3, 2, 1], [6, 5, 4], [9, 8, 7]]

console.log(sort(arr, 1));
// 輸出:[[9, 8, 7], [6, 5, 4], [3, 2, 1]]

console.log(sort(arr, 2));
// 輸出:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

在上面的代碼中,sort函數接受兩個參數,分別為要排序的數組和排序的列號。通過遍曆數組,進行冒泡排序,最後返回排好序的數組。

四、JS二維數組排序 第一行第一列

有時候,我們需要對二維數組的第一行和第一列進行排序,可以通過以下代碼實現。

var arr = [
  [3, 2, 1],
  [6, 5, 4],
  [9, 8, 7]
];
arr.sort(function(a, b) {
  if (a[0] !== b[0]) {
    return a[0] - b[0];
  } else {
    return a[1] - b[1];
  }
});
for (var i = 0; i < arr.length; i++) {
  arr[i].sort(function(a, b) {
    if (i === 0) {
      return a - b;
    } else {
      return 0;
    }
  });
}
console.log(arr);
// 輸出:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

在上面的代碼中,我們先按照第一列升序排序,如果第一列相同,則按照第二列升序排序。然後再分別對第一行和第一列進行排序,最終得到排序好的二維數組。

五、二維數組排序

對於一般的二維數組排序,我們可以將二維數組轉換為一維數組,使用sort方法進行排序。

var arr = [
  [3, 2, 1],
  [6, 5, 4],
  [9, 8, 7]
];
var temp = [];
for (var i = 0; i < arr.length; i++) {
  for (var j = 0; j < arr[i].length; j++) {
    temp.push(arr[i][j]);
  }
}
temp.sort(function(a, b) {
  return a - b;
});
var res = [];
for (var i = 0; i < arr.length; i++) {
  res[i] = [];
  for (var j = 0; j < arr[i].length; j++) {
    res[i][j] = temp.shift();
  }
}
console.log(res);
// 輸出:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

在上面的代碼中,我們將二維數組轉換為一維數組,並進行排序。然後再將一維數組按照原來的行列方式還原成二維數組。

六、JS遍歷二維數組

遍歷二維數組的方法和一維數組類似,只需要使用嵌套的for循環即可。

var arr = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
for (var i = 0; i < arr.length; i++) {
  for (var j = 0; j < arr[i].length; j++) {
    console.log(arr[i][j]);
  }
}

在上面的代碼中,我們使用兩個for循環遍歷二維數組,並輸出數組元素。

七、JS定義二維數組

在JS中,二維數組也是一種數組類型,同樣需要使用Array對象進行創建。我們以一個3行4列的二維數組為例。

var arr = new Array(3);
for (var i = 0; i < 3; i++) {
  arr[i] = new Array(4);
}
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[0][3] = 4;
arr[1][0] = 5;
arr[1][1] = 6;
arr[1][2] = 7;
arr[1][3] = 8;
arr[2][0] = 9;
arr[2][1] = 10;
arr[2][2] = 11;
arr[2][3] = 12;
console.log(arr);
// 輸出:[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

在上面的代碼中,我們先定義了一個長度為3的一維數組,然後用for循環分別對每個一維數組進行定義,得到二維數組。

八、JS創建二維數組

除了使用Array對象,我們還可以使用JS的雙重for循環來創建二維數組。

var arr = [];
for (var i = 0; i < 3; i++) {
  arr[i] = [];
  for (var j = 0; j < 4; j++) {
    arr[i][j] = i * 4 + j + 1;
  }
}
console.log(arr);
// 輸出:[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

在上面的代碼中,我們使用兩個for循環分別定義行和列,並給每個元素賦予對應的數值,從而得到二維數組。

原創文章,作者:JSLKR,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/316875.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JSLKR的頭像JSLKR
上一篇 2025-01-09 12:15
下一篇 2025-01-09 12:15

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python去掉數組的中括號

    在Python中,被中括號包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括號。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字符串進行格式化處理。 names = [‘A…

    編程 2025-04-29
  • Java創建一個有10萬個元素的數組

    本文將從以下方面對Java創建一個有10萬個元素的數組進行詳細闡述: 一、基本介紹 Java是一種面向對象的編程語言,其強大的數組功能可以支持創建大規模的多維數組以及各種複雜的數據…

    編程 2025-04-28
  • Python數組隨機分組用法介紹

    Python數組隨機分組是一個在數據分析與處理中常用的技術,它可以將一個大的數據集分成若干組,以便於進行處理和分析。本文將從多個方面對Python數組隨機分組進行詳細的闡述,包括使…

    編程 2025-04-28

發表回復

登錄後才能評論