Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvida sobre a Função na Aula 4

No primeiro video do módulo 4, que trata sobre sort. Eu fiquei com uma duvida como que funciona por detras do panos a o exemplo inicial que ele deu:

function (a, b) => a-b

Sei queé um assunto mais voltado para questao de lógica de programação do que os temas da aula. Mas fiquei com essa dúvida ? Alguem poderia me explicar como que funcionaria essa função ?

Pois na minha cabeça, era como se a função fizesse subtração primeiro dos de valores e usasse esse resultado da subtração para ordenar.

Não deveria ser algo como : function (a,b) => a <b ?

2 respostas
solução!

Oi Jaques, tudo bem?

Fico feliz em ver que está estudando JavaScript e buscando entender melhor os conceitos abordados no curso.

Com relação à sua dúvida, a função que você mencionou (a, b) => a-b é chamada de função de comparação ou callback de ordenação, e é utilizada juntamente com o método sort() para ordenar um array de valores.

Essa função recebe dois parâmetros (a e b) que representam os elementos a serem comparados. A lógica por trás dessa função é simples: se o resultado da subtração de a por b for um número negativo, significa que a vem antes de b na ordem desejada. Se for zero, a ordem não importa. Se for positivo, a vem depois de b na ordem desejada.

Vamos exemplificar isso com um array de números simples:

const numeros = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];

Se quisermos ordenar esse array em ordem crescente, podemos usar a função de comparação da seguinte forma:

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

O resultado será o seguinte:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

Como você pode ver, a função de comparação é responsável por dizer ao método sort() qual a ordem desejada para os elementos do array. No caso, estamos ordenando os números em ordem crescente, ou seja, do menor para o maior.

Com relação à sua sugestão de função (a, b) => a < b, ela até pode funcionar em alguns casos, mas não é uma forma muito eficiente ou segura de fazer a ordenação. Isso porque essa função retorna true se a é menor que b e false caso contrário, o que não é suficiente para garantir que a ordenação seja sempre consistente.

Por exemplo, se tivermos um array de objetos com a seguinte estrutura:

const pessoas = [
  { nome: 'João', idade: 20 },
  { nome: 'Maria', idade: 25 },
  { nome: 'Pedro', idade: 18 }
];

E tentarmos ordená-lo com a função (a, b) => a < b, teremos um resultado imprevisível, já que a comparação será feita com base no primeiro atributo do objeto (nome), que não necessariamente define a ordem desejada.

Por isso, é sempre importante utilizar uma função de comparação que seja consistente e adequada para o tipo de dados que estamos ordenando. A função (a, b) => a-b é uma forma simples e eficiente de fazer a ordenação de números em ordem crescente ou decrescente. Para ordenar outros tipos de dados, é preciso criar funções de comparação adequadas para cada caso.

Espero que tenha te ajudado.

Um abraço e bons estudos.

Obrigado pela explicaçao Lorena, ajudou sim !