Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mengisih Tatasusunan JavaScript Berbilang Dimensi dengan Berbilang Lajur?

Bagaimana untuk Mengisih Tatasusunan JavaScript Berbilang Dimensi dengan Berbilang Lajur?

DDD
DDDasal
2024-10-28 23:18:30186semak imbas

How to Sort a Multidimensional JavaScript Array by Multiple Columns?

Mengisih Tatasusunan Berbilang Dimensi mengikut Berbilang Lajur

Dalam JavaScript, menyusun tatasusunan rentetan boleh dicapai dengan mudah menggunakan fungsi Array.sort() . Walau bagaimanapun, untuk tatasusunan berbilang dimensi, atau apabila mengisih berdasarkan berbilang kriteria, fungsi tersuai diperlukan.

Pertimbangkan tatasusunan dengan struktur berikut:

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

Matlamatnya adalah untuk mengisih tatasusunan mengikut nama_pemilik dan kemudian dengan nama_publikasi, yang akan menyebabkan pemilik dengan nama yang sama dikumpulkan bersama, dan penerbitan dalam setiap kumpulan diisih mengikut abjad.

Sebelum ini, fungsi isihan tersuai bernama mysortfunction telah diperkenalkan, yang mengisih tatasusunan berdasarkan satu lajur, owner_name. Untuk melanjutkan fungsi ini untuk pengisihan berbilang lajur, pengubahsuaian berikut boleh dibuat:

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

Dalam fungsi yang dikemas kini ini:

  • o1 dan o2 mewakili nama pemilik dalam huruf kecil.
  • p1 dan p2 mewakili nama penerbitan dalam huruf kecil.

Pertama, ia membandingkan nama pemilik. Jika ia berbeza, fungsi mengembalikan -1 atau 1 untuk menandakan yang mana satu harus mendahului yang lain.

Walau bagaimanapun, jika nama pemilik adalah sama, fungsi meneruskan untuk membandingkan nama penerbitan. Dalam kes ini, ia mengembalikan -1 atau 1 untuk menentukan susunannya.

Jika kedua-dua perbandingan menghasilkan kesamaan, fungsi mengembalikan 0, menunjukkan bahawa kedua-dua elemen adalah sama dan harus mengekalkan susunan asalnya.

Dengan mengisih tatasusunan menggunakan fungsi tersuai ini, matlamat untuk mengisih mengikut nama_pemilik dan kemudian mengikut nama_penerbitan tercapai. Pemilik dengan nama yang sama akan dikumpulkan bersama, dengan penerbitan dalam setiap kumpulan disenaraikan mengikut abjad.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan JavaScript Berbilang Dimensi dengan Berbilang Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn