Como o Método Sort Funciona?

Existem muitas maneiras diferentes de ordenar seus dados em programação. Nesta lição, vamos focar no método embutido sort em JavaScript. O método sort é usado para organizar os elementos de um array e retorna uma referência para o array ordenado. Nenhuma cópia é feita porque os elementos são ordenados no local. Aqui está a sintaxe básica para o método sort:
array.sort(compareFunction);
A compareFunction é um parâmetro opcional que especifica uma função que define a ordem de classificação. Vamos ver mais tarde como usar uma função de comparação ao ordenar números. Neste primeiro exemplo, temos um array de strings em ordem aleatória.
const fruits = ["Banana", "Orange", "Apple", "Mango"];
Nosso objetivo é ordenar o array em ordem alfabética. Podemos fazer isso chamando o método sort no array fruits.
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();

console.log(fruits); // ["Apple", "Banana", "Mango", "Orange"]
O resultado será um array ordenado de frutas em ordem alfabética começando com a fruta Apple. No próximo exemplo, queremos ordenar o seguinte array de números:
const numbers = [414, 200, 5, 10, 3];
Se tentarmos usar o método sort neste array numbers, obteremos resultados inesperados.
const numbers = [414, 200, 5, 10, 3];
numbers.sort();

console.log(numbers); // [10, 200, 3, 414, 5]
Esperávamos ver o resultado [3, 5, 10, 200, 414], mas em vez disso obtivemos [10, 200, 3, 414, 5]. Isso ocorre porque o método sort converte os elementos em strings e depois compara suas sequências de valores das unidades de código UTF-16. Unidades de código UTF-16 são os valores numéricos que representam os caracteres na string. Exemplos de unidades de código UTF-16 são os números 65, 66 e 67 que representam os caracteres A, B e C respectivamente. Então, o número 200 aparece antes do número 3 no array, porque a string 200 vem antes da string 3 ao comparar suas unidades de código UTF-16. A solução para este problema é fornecer uma função de comparação para o método sort. Aqui está um exemplo de como ordenar o array numbers usando uma função de comparação:
const numbers = [414, 200, 5, 10, 3];

numbers.sort((a, b) => a - b);

console.log(numbers); // [3, 5, 10, 200, 414]
Os parâmetros a e b são os dois elementos que estão sendo comparados. A função de comparação deve retornar um valor negativo se a deve vir antes de b, um valor positivo se a deve vir depois de b e zero se a e b forem iguais. A primeira comparação é entre os números 414 e 200. O resultado de 414 - 200 é 214, que é um valor positivo. Isso significa que 414 deve vir depois de 200 no array ordenado. A próxima comparação é entre os números 200 e 5. O resultado de 200 - 5 é 195, que é um valor positivo. Isso significa que 200 deve vir depois de 5 no array ordenado. Repetimos esse processo para todos os elementos no array e o resultado é um array de números ordenado. Embora existam muitas outras formas de ordenar dados em programação, o método sort em JavaScript pode ser útil e eficiente em muitos casos quando você precisa ordenar um array de elementos.
Este módulo não possui perguntas. Marque como concluído.