Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengisih Tatasusunan 2D mengikut Nilai Lajur dalam JavaScript?

Bagaimana untuk Mengisih Tatasusunan 2D mengikut Nilai Lajur dalam JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-11-15 19:11:05326semak imbas

How to Sort a 2D Array by Column Value in JavaScript?

Isih Tatasusunan 2D dalam JavaScript

Bagaimanakah saya boleh mengisih tatasusunan 2D mengikut nilai lajur dalam JavaScript?

Andaikan kita mempunyai tatasusunan 2D dengan format berikut:

[[12, "AAA"], [58, "BBB"], [28, "CCC"], [18, "DDD"]]

Kami mahu mengisih tatasusunan ini mengikut lajur pertama, menghasilkan:

[[12, "AAA"], [18, "DDD"], [28, "CCC"], [58, "BBB"]]

Penyelesaian:

Mengisih tatasusunan 2D mengikut nilai lajur adalah mudah dalam JavaScript. Begini cara anda boleh melakukannya:

var a = [[12, 'AAA'], [58, 'BBB'], [28, 'CCC'],[18, 'DDD']];

a.sort(sortFunction);

function sortFunction(a, b) {
    if (a[0] === b[0]) {
        return 0;
    }
    else {
        return (a[0] < b[0]) ? -1 : 1;
    }
}

Fungsi ini menggunakan peraturan berikut:

  • Jika elemen dalam lajur pertama adalah sama, kembalikan 0.
  • Jika elemen dalam lajur pertama tatasusunan pertama kurang daripada lajur kedua, kembalikan -1.
  • Jika elemen dalam lajur pertama tatasusunan pertama lebih besar daripada lajur kedua, kembalikan 1.

Untuk mengisih tatasusunan mengikut lajur kedua, cuma gantikan a[0] dengan a[1] dalam fungsi perbandingan.

a.sort(compareSecondColumn);

function compareSecondColumn(a, b) {
    if (a[1] === b[1]) {
        return 0;
    }
    else {
        return (a[1] < b[1]) ? -1 : 1;
    }
}

Rujuk dokumentasi JavaScript untuk mendapatkan maklumat lanjut tentang fungsi isihan.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan 2D mengikut Nilai Lajur dalam JavaScript?. 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