"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Array.sort() é estável em diferentes navegadores?

Array.sort() é estável em diferentes navegadores?

Publicado em 2024-11-12
Navegar:481

Is Array.sort() Stable in Different Browsers?

Estabilidade do método Array.sort() em diferentes navegadores

A especificação do script ECMA permanece agnóstica quanto ao algoritmo e à estabilidade do Array. método sort(). No entanto, atualizações e descobertas recentes esclareceram o comportamento desse método em vários navegadores.

ES2019 e além

A partir do ES2019, o método de classificação agora é necessário para manter a ordem dos elementos no caso de valores duplicados. Isso significa que Array.sort() tem garantia de estabilidade em navegadores que suportam ES2019 e versões posteriores.

Suporte a navegador legado

Antes do ES2019, a estabilidade do Array.sort() dependia do navegador:

  • Internet Explorer (IE6 ): Estável
  • Firefox ( Instável
  • Firefox (>= 3): Estável
  • Chrome ( Instável
  • Chrome (>= 70): Estável
  • Opera ( Instável
  • Opera (>= 10): Estável
  • Safari (4 ): Estável
  • Edge (para matrizes mais longas): Instável

V8 Anomalia

Em certas versões do V8 (o mecanismo JavaScript usado pelo Chrome e Node.js), o algoritmo de classificação pode mudar de estável para instável dependendo do tamanho da matriz. Para demonstrar esse comportamento, considere o seguinte caso de teste:

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 

Este código simula uma matriz de pares com coordenadas x aleatórias e coordenadas y crescentes. Uma classificação estável manteria a ordem dos elementos com a mesma coordenada x (neste caso, a coordenada y deveria ser sequencial). No entanto, alguns navegadores (especialmente versões anteriores do Chrome) podem apresentar instabilidade na classificação de matrizes maiores.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3