首頁  >  文章  >  web前端  >  如何按多列對多維 JavaScript 陣列進行排序?

如何按多列對多維 JavaScript 陣列進行排序?

DDD
DDD原創
2024-10-28 23:18:30123瀏覽

How to Sort a Multidimensional JavaScript Array by Multiple Columns?

按多列對多維數組排序

在JavaScript 中,可以使用Array.sort() 函數輕鬆實現對字串數組的排序。但是,對於多維數組,或基於多個條件排序時,需要自訂函數。

考慮具有以下結構的數組:

[publicationID][publication_name][ownderID][owner_name]

目標是對數組進行排序按owner_name,然後按publication_name,這將導致具有相同名稱的所有者被分組在一起,並且每個組別中的出版物按字母順序排序。

之前,引入了一個名為 mysortfunction 的自訂排序函數,該函數對陣列進行排序基於單一列,owner_name。若要擴充此函數以進行多列排序,可以進行以下修改:

<code class="javascript">function mysortfunction(a, b) {

  var o1 = a[3].toLowerCase();
  var o2 = b[3].toLowerCase();

  var p1 = a[1].toLowerCase();
  var p2 = b[1].toLowerCase();

  if (o1 < o2) return -1;
  if (o1 > o2) return 1;
  if (p1 < p2) return -1;
  if (p1 > p2) return 1;
  return 0;
}</code>

在此更新的函數中:

  • o1 和 o2 代表小寫的擁有者名稱。
  • p1 和 p2 代表小寫的出版品名稱。

首先,它比較擁有者名稱。如果它們不同,函數將傳回 -1 或 1 來表示哪一個應該在另一個之前。

但是,如果所有者名稱相同,則函數將繼續比較出版物名稱。在這種情況下,它會傳回 -1 或 1 來指定它們的順序。

如果兩次比較結果相等,則函數傳回 0,表示兩個元素相等並且應保留其原始順序。

透過使用這個自訂函數對數組進行排序,達到了按owner_name排序,然後按publication_name排序的目的。同名的所有者將被分組在一起,每個組內的出版物按字母順序列出。

以上是如何按多列對多維 JavaScript 陣列進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn