Contoh dalam artikel ini menerangkan kaedah pengisihan tatasusunan objek JavaScript. Kongsikan dengan semua orang untuk rujukan anda, butirannya adalah seperti berikut:
Kaedah pengisihan fungsi tatasusunan Javascript, secara lalai, diisih dalam tertib menaik mengikut susunan aksara ASCII.
arrayobj.sort(fungsi isihan);
Parameter: sortFunction
Pilihan. ialah nama fungsi yang digunakan untuk menentukan susunan unsur. Jika parameter ini diabaikan, elemen akan diisih dalam susunan aksara ASCII menaik.
Kaedah isihanmengisih objek Tatasusunan dengan sewajarnya; tiada objek Tatasusunan baharu dibuat semasa pelaksanaan.
Jika fungsi disediakan untuk argumen fungsi isihan, fungsi mesti mengembalikan salah satu daripada nilai berikut:
Nilai negatif jika parameter pertama yang diluluskan adalah lebih kecil daripada parameter kedua.
Sifar jika kedua-dua hujah adalah sama.
Nilai positif jika argumen pertama lebih besar daripada argumen kedua.
Kaedah di atas sangat mudah untuk pengisihan satu dimensi, tetapi bagaimana untuk melakukan pengisihan nilai berbilang kunci seperti ORDER BY dalam pernyataan SQL?
Pengisihan nilai berbilang kunci tatasusunan berbilang dimensi perlu lebih rumit, tetapi tidak perlu menggunakan gelung untuk menyelesaikannya. Penyelesaian sebenar adalah sama.
Nombor:
Contoh berikut adalah untuk mengisih tatasusunan berbilang dimensi nombor dalam susunan lajur 5, lajur 9 dan lajur 3, seperti ORDER BY col5, col9, col7 dalam pernyataan SQL. Apabila bercakap tentang nombor, anda boleh menolak terus kedua-dua item dan menggunakan hasilnya sebagai nilai pulangan.
<script language=javascript> var myArray = new Array(); for(var i=0;i<10;i++ ){ myArray[i]=new Array(); myArray[i][0]=Math.floor(Math.random()*10); myArray[i][1]=Math.floor(Math.random()*10); myArray[i][2]=Math.floor(Math.random()*10); myArray[i][3]=Math.floor(Math.random()*10); myArray[i][4]=Math.floor(Math.random()*10); myArray[i][5]=Math.floor(Math.random()*10); myArray[i][6]=Math.floor(Math.random()*10); myArray[i][7]=Math.floor(Math.random()*10); myArray[i][8]=Math.floor(Math.random()*10); } myArray.sort( function(x, y) { if(x[4]!=y[4]){ return x[4]-y[4]; } else if(x[8]!=y[8]){ return x[8]-y[8]; } else if(x[6]!=y[6]){ return x[6]-y[6]; } else { return 1; } } ); for(var i=0;i<myArray.length;i++ )...{ document.write(myArray[i].join(",") + "<br/>"); } </script>
Watak:
aksara, item dalam sortFunction tidak boleh ditolak terus seperti nombor Anda perlu memanggil kaedah str1.localeCompare(str2) untuk perbandingan untuk memenuhi nilai pulangan. Berikut ialah kes pengisihan lajur 1 dan 2 tatasusunan berbilang dimensi.
function sortFunction(array) { return array.sort( function(x, y) ...{ return (x[0]==y[0])?(x[1].localeCompare(y[1])):(x[0].localeCompare(y[0])) }); }
Jadi fungsi pengisihan arrayObject.sort(sortFunction) masih sangat berkuasa, dan akhirnya dapat merealisasikan fungsi yang sama seperti ORDER BY dalam pernyataan SQL.
Saya harap artikel ini akan membantu semua orang dalam pengaturcaraan JavaScript.