toSorted()
O método toSorted() de uma instância de Array ordena os elementos que o compõe. O comportamento padrão de toSorted() é ordenar de maneira alfabética ascendente, convertendo seus elementos em strings e comparando cada caractere em seus valores UTF-16.
O método toSorted() não é destrutivo, considerado uma versão copiadora de sort().
Demo
Array.toSorted()
// ordenamento dos elementos do array alfabeticamente let inimigosOrd = strings.toSortedt(); console.log(inimigos); console.log(inimigosOrd);
Ordenar números
O método toSorted(), por padrão, trata todos os elementos que compõe o array como string. Se o array armazena os valores [100, 4, 20], o método ordenará os elementos da seguinte forma:
- Primeiro, os números inteiros serão convertidos em strings: ["100", "2", "40"]
- Pegue o primeiro caractere que compõe os strings (nesse caso: '1', '4' e '2')
- Ordene as strings comparando o valor dos caracteres na tabela UTF-16
Como '1' é menor que '4' e '2', o elemento "100" ficará na primeira posição. O array ordenado pelo método toSorted() retornará ["100", "20", "4"].
Para o método ordenar corretamente números, tanto de maneira ascendente quanto decrescente, é necessário instruir o método como os elementos devem ser comparados.
Array.toSorted()
// ordenar array sem instrução let numsOrd = nums.toSorted(); console.log(numsOrd);
// ordenamento dos elementos do array de maneira ascendente numsOrd = nums.toSorted((a, b) => a - b); console.log(numsOrd);
// ordenamento dos elementos do array de maneira descendente numsOrd = nums.toSorted((a,b) => b - a); console.log(numsOrd);
O sort() reconhece a ordem entre dois elementos ao subtrair os valores de um pelo outro.
- Se o valor for negativo ou 0, não é necessário trocar a ordem entre os dois elementos
- Se o valor for positivo, troque a ordem entre os dois elementos