Rumah > hujung hadapan web > tutorial js > Bagaimana Mengisih Tatasusunan JavaScript Berdasarkan Susunan Tatasusunan Lain?

Bagaimana Mengisih Tatasusunan JavaScript Berdasarkan Susunan Tatasusunan Lain?

Barbara Streisand
Lepaskan: 2024-12-19 18:49:10
asal
696 orang telah melayarinya

How to Sort a JavaScript Array Based on the Order of Another Array?

Mengisih Tatasusunan JavaScript Berdasarkan Tatasusunan Lain

Dalam JavaScript, menyusun tatasusunan ialah operasi biasa. Walau bagaimanapun, terdapat senario di mana anda mungkin mahu mengisih tatasusunan berdasarkan tatasusunan lain. Ini boleh menjadi mencabar, terutamanya apabila anda tidak mempunyai pengecam unik untuk memautkan elemen.

Pernyataan Masalah:

Bayangkan anda mempunyai dua tatasusunan:

  • itemArray: Tatasusunan pasangan [nama, groupName], cth.:

    [
        ['Anne', 'a'],
        ['Bob', 'b'],
        ['Henry', 'b'],
        ['Andrew', 'd'],
        ['Jason', 'c'],
        ['Thomas', 'b']
    ]
    Salin selepas log masuk
  • sortingArr: Tatasusunan yang diisih nama kumpulan, cth.:

    ['b', 'c', 'b', 'b', 'a', 'd']
    Salin selepas log masuk

Tugasnya ialah menyusun semula itemArray agar sesuai dengan susunan sortingArr. Ini bermakna item yang tergolong dalam kumpulan yang sama harus bersebelahan dan dipesan mengikut susunan dalam sortingArr.

Penyelesaian:

Untuk menyelesaikan masalah ini, kita boleh menggunakan fungsi pengisihan yang membandingkan elemen berdasarkan indeks kumpulan mereka dalam sortingArr:

itemsArray.sort(function(a, b){  
  return sortingArr.indexOf(a) - sortingArr.indexOf(b);
});
Salin selepas log masuk

Fungsi ini mengira perbezaan antara indeks unsur dalam sortingArr. Perbezaan positif menunjukkan bahawa elemen a harus diletakkan selepas elemen b, manakala perbezaan negatif menunjukkan sebaliknya.

Penyelesaian Satu Baris:

Sebagai alternatif, anda boleh menulis fungsi pengisihan menggunakan sintaks anak panah, menghasilkan yang lebih ringkas penyelesaian:

itemsArray.sort((a, b) => sortingArr.indexOf(a) - sortingArr.indexOf(b));
Salin selepas log masuk

Output:

Selepas mengisih, itemsArray akan kelihatan seperti ini:

[
    ['Bob', 'b'],
    ['Jason', 'c'],
    ['Henry', 'b'],
    ['Thomas', 'b'],
    ['Anne', 'a'],
    ['Andrew', 'd'],
]
Salin selepas log masuk

Seperti yang anda lihat, elemen dalam itemsArray telah disusun semula dan diisih untuk dipadankan dengan susunan dalam sortingArr.

Atas ialah kandungan terperinci Bagaimana Mengisih Tatasusunan JavaScript Berdasarkan Susunan Tatasusunan Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan