Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengisih Tatasusunan Berbilang Medan dalam JavaScript?

Bagaimana untuk Mengisih Tatasusunan Berbilang Medan dalam JavaScript?

Patricia Arquette
Patricia Arquetteasal
2024-12-24 02:18:10505semak imbas

How to Sort a Multi-Field Array in JavaScript?

Isih Tatasusunan Berbilang Medan

Dalam soalan terdahulu, kami menerokai isihan tatasusunan berdasarkan satu medan. Walau bagaimanapun, senario dunia sebenar selalunya memerlukan pengisihan pada berbilang kriteria. Artikel ini menunjukkan cara menyesuaikan pendekatan itu untuk pengisihan berbilang medan.

Contoh Khusus: Bandar dan Harga

Pertimbangkan tatasusunan Rumah berikut yang perlu kita isi mengikut bandar (menaik) dan kemudian harga (menurun):

var homes = [
    { "h_id":"3", "city":"Dallas", "state":"TX", "zip":"75201", "price":"162500" },
    { "h_id":"4", "city":"Bevery Hills", "state":"CA", "zip":"90210", "price":"319250" },
    { "h_id":"6", "city":"Dallas", "state":"TX", "zip":"75000", "price":"556699" },
    { "h_id":"5", "city":"New York", "state":"NY", "zip":"00010", "price":"962500" }
];

Isih berbilang medan Pendekatan

Untuk mengisih berdasarkan berbilang medan, kita boleh menggunakan pendekatan pengisihan berantai yang melibatkan membandingkan nilai medan yang dipilih, satu demi satu, sehingga kita menemui perbezaan.

Pelaksanaan

data.sort(function (a, b) {
    return a.city.localeCompare(b.city) || b.price - a.price;
});

Penjelasan

  • Kaedah localeCompare digunakan untuk membandingkan nilai bandar .
  • Jika nilai bandar adalah sama, kita tolak nilai harga b daripada a untuk mengisih harga dalam susunan menurun.
  • Susun atur yang terhasil diisih mengikut bandar (menaik) dan kemudian harga (menurun).

Output

[
  {
    "h_id": "3",
    "city": "Dallas",
    "state": "TX",
    "zip": "75201",
    "price": "162500"
  },
  {
    "h_id": "6",
    "city": "Dallas",
    "state": "TX",
    "zip": "75000",
    "price": "556699"
  },
  {
    "h_id": "4",
    "city": "Bevery Hills",
    "state": "CA",
    "zip": "90210",
    "price": "319250"
  },
  {
    "h_id": "5",
    "city": "New York",
    "state": "NY",
    "zip": "00010",
    "price": "962500"
  }
]

Pendekatan ini menyediakan penyelesaian yang fleksibel untuk menyusun tatasusunan pada berbilang medan. Ia boleh diubah suai dengan mudah untuk menampung sebarang bilangan kriteria pengisihan, menjadikannya sesuai untuk pelbagai jenis senario manipulasi data.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan Berbilang Medan 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