JavaScript: conhecendo o método sort()


JavaScript: conhecendo o método sort()

JavaScript

Dando continuidade a minha serie de artigos sobre JavaScript, hoje irei apresentar o método sort(). Para quem ainda não conhece, o sort() ordena os elementos de um array. Essa ordenação é de acordo com a tabela de código unicode.

Sintaxe

arr.sort([funcToCompare])

Se funcToComparenão for informada, os elementos serão ordenados de acordo com a sua conversão para texto. Veja abaixo um exemplo:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].sort()

Resultado do metodo sort() no array acima:

resultado sort()

Ficou um pouco confuso né? Bom, o que aconteceu foi o seguinte, o método .sort() converte os valores para uma string e ordena eles em ordem crescente, através dos caracteres da tabela Unicode.

De acordo com a implementação da tabela Unicode, é possível perceber, pelo menos no nosso subset, que a ordem é seguida de alguns símbolos, números, letras maiúsculas, letras minúsculas, mais alguns outros símbolos. Por esse motivo no exemplo anterior o “10” veio antes do “2” porque “1”, que é o primeiro caractere de “10”, vem antes do “2”.

Para facilitar o seu entendimento, veja abaixo mais alguns exemplos:

Note que no exemplo acima ‘1 word’ veio antes de word, isso acorreu porque na tabela unicode os números vem antes das letras maiúsculas, que vem antes das minúsculas… etc

Agora, e quando você precisar criar uma ordenação por números?

Foi pensando nesse cenário que eu criei esse artigo. Eu tenho uma lista de objetos, que tem um atributo order. Até ai sem nenhuma novidade, mas chegou uma task para eu printar eles na tela, obedecendo esse atributo. Veja esse array de objetos:

Para esse cenário eu tive que utilizar a funcToComparemencionada no inicio desse artigo. Quando esse parâmetro é informado, o array será ordenado de acordo com o seu valor de retorno.

Veja abaixo os seus tipos de retorno:

  • se a comparação for menor que zero, a é posicionado antes de b
  • se a comparação for maior que zero, a é posicionado depois de b
  • se a comparação for igual a zero, a e b permanecem com as posições inalteradas

Agora para ordenar o array de objetos acima de uma forma crescente, eu precisei criar uma function e passar order como parâmetro de a e b. Veja abaixo como ficou essa implementação:

Caso você queira alterar a ordenação para decrescente, basta passar b.order — a.order.

Bom, com isso finalizamos mais esse artigo, espero ter ajudado e até a próxima pessoal.

Referências:

dunderlabs

MDN

Compartilhe:

Share on facebook
Facebook
Share on twitter
Twitter
Share on pinterest
Pinterest
Share on linkedin
LinkedIn

Table of Contents

Postagens Relacionadas

iphone12

Apple iPhone 12 Pro Max

Apple iPhone 12 Pro Max  CPU Apple A14 Bionic  RAM 6 GB  Armazenamento 512 GB  Display 6.7 XDR OLED  Câmera 12 Mp + 12 Mp
RockBottomRiser

Rock Bottom Riser

Rock Bottom Riser 01/03/2021(US) – Documentário – 1h 10min –   Nota: 0/10   Sinopse     Elenco Nainoa Thompson Como – master navigator Moses
SaferatHome

Safer at Home

Safer at Home 26/02/2021(US) – Filmes – 0h 0min –   Nota: 0/10   Sinopse     Elenco Mais informações Título Original Safer at Home
SouLunaOUltimoShow

Sou Luna: O Último Show

O elenco de “Sou Luna” se apresenta ao vivo pela última vez no mítico estádio Luna Park em Buenos Aires. Vamos acompanhá-los na intimidade dos bastidores e r…