Rumah >hujung hadapan web >tutorial js >Adakah Kaedah Array.sort() JavaScript Stabil Merentas Semua Pelayar?

Adakah Kaedah Array.sort() JavaScript Stabil Merentas Semua Pelayar?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 01:42:30221semak imbas

Is JavaScript's Array.sort() Method Stable Across All Browsers?

Kestabilan Kaedah Array.sort() Merentasi Penyemak Imbas

Pengenalan

Pengisihan tatasusunan ialah operasi asas dalam JavaScript. Walau bagaimanapun, kestabilan kaedah Array.sort() berbeza-beza merentas pelayar yang berbeza.

Skrip dan Kestabilan ECMA

Spesifikasi Skrip ECMA tidak mentakrifkan algoritma pengisihan tertentu atau nyatakan sama ada jenis itu harus stabil. Ini bermakna pelayar yang berbeza mungkin melaksanakan pendekatan yang berbeza, menghasilkan ciri kestabilan yang berbeza-beza.

Kestabilan Merentas Penyemak Imbas Tertentu

  • IE 6-8: Stabil
  • Firefox < 3: Tidak Stabil
  • Firefox >= 3: Stabil
  • Chrome < 70: Tidak Stabil
  • Chrome >= 70: Stabil
  • Opera < 10: Tidak Stabil
  • Opera >= 10: Stabil
  • Safari 4: Stabil
  • Tepi (tatasusunan besar): Tidak Stabil

Contoh Kes Ujian

Untuk menunjukkan kestabilan kaedah isihan, kes ujian yang melibatkan pasangan nilai boleh dibuat:

<code class="javascript">function Pair(_x, _y) {
    this.x = _x;
    this.y = _y;
}
function pairSort(a, b) {
    return a.x - b.x;
}
var check = [];
for (var i = 0; i < 100; ++i) {
    check.push(new Pair(Math.random() * 3 + 1, ++y));
}
check.sort(pairSort);</code>

Jika isihan itu stabil, nilai akan diisih berdasarkan nilai xnya dahulu, dan kemudian mengikut nilai ynya, supaya susunan nilai asal dengan nilai x yang sama terpelihara. Sebaliknya, isihan yang tidak stabil mungkin menghasilkan susunan yang berbeza untuk nilai dengan nilai x yang sama.

Atas ialah kandungan terperinci Adakah Kaedah Array.sort() JavaScript Stabil Merentas Semua Pelayar?. 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