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

Linda Hamilton
Lepaskan: 2024-11-04 01:42:30
asal
180 orang telah melayarinya

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>
Salin selepas log masuk

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!

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