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.
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.
Antes do ES2019, a estabilidade do Array.sort() dependia do navegador:
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.
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