Rumah  >  Artikel  >  hujung hadapan web  >  Adakah Array.sort() Stabil dalam Pelayar Berbeza?

Adakah Array.sort() Stabil dalam Pelayar Berbeza?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 00:03:28232semak imbas

Is Array.sort() Stable in Different Browsers?

Array.sort() Kestabilan Kaedah dalam Pelayar Berbeza

Spesifikasi Skrip ECMA kekal agnostik pada algoritma dan kestabilan Array kaedah .sort(). Walau bagaimanapun, kemas kini dan penemuan baru-baru ini telah menjelaskan gelagat kaedah ini dalam pelbagai penyemak imbas.

ES2019 dan Beyond

Setakat ES2019, kaedah isihan ialah kini diperlukan untuk mengekalkan susunan elemen sekiranya berlaku nilai pendua. Ini bermakna Array.sort() dijamin stabil dalam pelayar yang menyokong ES2019 dan versi yang lebih baru.

Sokongan Penyemak Imbas Lama

Sebelum ES2019, kestabilan daripada Array.sort() bergantung kepada pelayar:

  • Internet Explorer (IE6 ): 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 (untuk tatasusunan yang lebih panjang): Tidak Stabil

V8 Anomali

Dalam versi tertentu V8 (enjin JavaScript yang digunakan oleh Chrome dan Node.js), algoritma pengisihan mungkin bertukar daripada stabil kepada tidak stabil bergantung pada saiz daripada tatasusunan. Untuk menunjukkan tingkah laku ini, pertimbangkan kes ujian berikut:

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

Kod ini mensimulasikan tatasusunan pasangan dengan koordinat x rawak dan koordinat y yang meningkat. Isih yang stabil akan mengekalkan susunan unsur dengan koordinat-x yang sama (dalam kes ini, koordinat-y hendaklah berjujukan). Walau bagaimanapun, sesetengah penyemak imbas (terutamanya versi Chrome yang lebih awal) mungkin memaparkan ketidakstabilan dalam menyusun tatasusunan yang lebih besar.

Atas ialah kandungan terperinci Adakah Array.sort() Stabil dalam Pelayar Berbeza?. 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