Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang penggunaan kaedah sort() dalam kemahiran javascript_javascript

Penjelasan terperinci tentang penggunaan kaedah sort() dalam kemahiran javascript_javascript

WBOY
WBOYasal
2016-05-16 15:41:321434semak imbas

Sintaks: arrayObject.sort(sortby); Menentukan susunan isihan. Mesti satu fungsi.

Kaedah sort() digunakan untuk mengisih elemen tatasusunan.

Jika kaedah ini dipanggil tanpa parameter, elemen dalam tatasusunan akan diisih mengikut abjad, atau lebih tepat lagi, dalam susunan pengekodan aksara. Untuk mencapai matlamat ini,

Mula-mula tukar elemen tatasusunan kepada rentetan (jika perlu) untuk perbandingan.

Jika anda ingin mengisih mengikut kriteria lain, anda perlu menyediakan fungsi perbandingan, yang membandingkan dua nilai dan mengembalikan nombor yang menerangkan susunan relatif kedua-dua nilai.

Fungsi perbandingan harus mempunyai dua parameter a dan b, dan nilai pulangannya adalah seperti berikut:

Jika a kurang daripada b, a harus muncul sebelum b dalam tatasusunan yang diisih, kemudian kembalikan nilai kurang daripada 0.

Jika a sama dengan b, kembalikan 0.

Jika a lebih besar daripada b, kembalikan nilai lebih besar daripada 0.

Gunakan kaedah sort() dalam js untuk mengisih nombor

<script>
  var arr = [23,12,1,34,116,8,18,37,56,50];
  alert(arr.sort();
</script>

Pulangan: [1, 116, 12, 18, 23, 34, 37, 50, 56, 8]

Kod di atas tidak mengisih nombor mengikut saiznya untuk mencapai ini, fungsi pengisihan mesti digunakan:

<script>
  var arr = [23,12,1,34,116,8,18,37,56,50];
  function sequence(a,b){
    if (a>b) {
      return 1;
    }else if(a<b){
      return -1
    }else{
      return 0;
    }
  }
  console.log(arr.sort(sequence));
</script>

Pulangan: [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (tiada masalah)

Sudah tentu, anda juga boleh menulis fungsi pengisihan ke dalam kaedah sort():

<script>
  var arr = [23,12,1,34,116,8,18,37,56,50];
  var arr2 = arr.sort(function(a,b){
     if (a>b) {
      return 1;
    }else if(a<b){
      return -1
    }else{
      return 0;
    }  
  })
  console.log(arr2);
</script>

Pulangan: [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (tiada masalah juga)

juga boleh dipermudahkan kepada cara penulisan ini
Kerana: jika a kurang daripada b, a harus muncul sebelum b dalam tatasusunan yang diisih, maka nilai kurang daripada 0 dikembalikan.

Jika a sama dengan b, kembalikan 0.

Jika a lebih besar daripada b, kembalikan nilai lebih besar daripada 0

 <script>
   var arr = [23,12,1,34,116,8,18,37,56,50];
   function sequence(a,b){
     return a - b;
   }
   console.log(arr.sort(sequence));
 </script>

Pemulangan: [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (juga betul)

Isih mengikut susunan abjad adalah lebih mudah, cuma gunakan kaedah sort() secara terus:

 <script>
   var arr = ['fanda','banner','find','zoom','index','width','javascript'];
   console.log(arr.sort());
 </script>

Pulangan: ["sepanduk", "fanda", "cari", "indeks", "javascript", "lebar", "zum"]

Sekarang apabila saya belajar javascript, saya mendapati bahawa fungsi sort() agak pelik (mungkin ia adalah masalah dengan tahap saya -_-!), jadi saya akan merekodkan apa yang saya temui di sini. Parameter kaedah sort() adalah sangat pelik. Ia mestilah fungsi, tetapi ia juga merupakan parameter pilihan Jika tiada parameter, ia akan disusun dalam susunan rentetan kamus secara lalai (walaupun nilai berangka akan ditukar. menjadi rentetan untuk diproses). Parameter ini adalah untuk dapat membandingkan saiz dua nilai, seperti:

Salin kod Kod adalah seperti berikut:

fungsi sortNombor(a, b){
return a - b; //Apa yang dikembalikan di sini ialah perbezaannya Jika kurang daripada 0, a akan diletakkan di hadapan jadilah apa sahaja. (Kaedah pengisihan gelembung!!)
}

Aplikasinya adalah seperti berikut (contoh ini sangat klasik!!):

<script type="text/javascript">
function sortNumber(a,b){return a - b}
var arr = new Array(3)
arr[0] = "10";
arr[1] = "5";
arr[2] = "4";
document.write(arr + "<br />");
document.write(arr.sort(sortNumber));
</script>

Kemudian susunan asal 10,5,4 akan menjadi 4,5,10 Berikut adalah penjelasan tentang proses ini ? Bandingkan? Ini adalah seperti ini apabila arr memanggil isihan bermula dari nombor pertama, tidak ada nombor sebelum 10 untuk dibandingkan dengannya, jadi ia pergi ke nombor kedua, iaitu 5. Pada masa ini, 10 akan dibandingkan dengan 5, jadi ia akan dipanggil sortNumber dan lulus 10 dan 5 in, ini adalah sifat sort().

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