Nota: apenas traduzi o texto abaixo e postei aqui.
Hoje vamos recriar o método inRange() com vanilla JS.
O que _.inRange() faz
O método lodash _.inRange() pega um number e verifica se está entre dois outros numbers.
Você passa o number, o start do range e o end do range como arguments.
_.inRange(number, start, end);
// Retorna true
_.inRange(2, 1, 4);
// Retorna false
_.inRange(2, 3, 5);
Você também pode pular o start e passar apenas o end. O método usará 0 como start por padrão.
// Retorna true
_.inRange(2, 4);
Se o number for igual ao start do range, ele passa. Se for igual ao end, ele falha. Pessoalmente, isso me parece estranho.
// Retorna true
_.inRange(2, 2, 4);
// Retorna false
// Porque?????
_.inRange(4, 2, 4);
Tudo bem, vamos fazer isso.
Recriando _.inRange() com vanilla JS
Primeiro, vamos configurar nossa helper function.
var inRange = function (num, start, end) {
    // Faça as coisas...
};
A seguir, vamos verificar se nosso number está no range.
Acho que o end deve ser inclusivo, assim como o start, então faremos as coisas de maneira um pouco diferente do que lodash faz aqui. Verificaremos se num é maior ou igual ao start e menor ou igual ao end. Então, retornaremos o resultado.
var inRange = function (num, start, end) {
    return num >= start && num <= end;
};
A versão lodash permite "drop" o start, se desejar, e o default é 0. Vamos adicionar essa feature.
Verificaremos se end existe. Caso contrário, atribuiremos start como seu valor. Então, definiremos o start como 0.
var inRange = function (num, start, end) {
    // Se não houver o end number, use start como end
    if (!end) {
        end = start;
        start = 0;
    }
    return num >= start && num <= end;
};
Uma última coisa que lodash faz é "flip" os valores de start e end se o start for maior que o end. Isso é feito para suportar valores negativos.
// Retorna false
inRange(-2, -1, -4);
Neste exemplo, -1 é na verdade maior que -4, porque são números negativos. O número -2 está dentro do range, mas se os números não fossem "flipped", ele falharia.
Pessoalmente, acho que os usuários deveriam passar isso da maneira certa, então não vou apoiar essa feature.
// Retorna true
inRange(-2, -4, -1);
Então, com isso, terminamos.
Fonte
Newsletter de Go Make Things
              
    
Top comments (0)