Category: JavaScript

  • JavaScript & jQuery: kaskadowe łączenie wywołań (ang. method chaining)

    Aby moc kaskadowo łączyć wykonywanie funkcji (ang. method chaining), musisz się upewnić ze Twoje metody zwracają obiekt/instancje.

    Dla przykładu w vanilla JavaScript może to wyglądać następująco:

    var value = 0;
    var obj = {
        increase: function(val) {
            value = value + val;
            return obj;
        },
        decrease: function(val) {
            value = value - val;
            return obj;
        }
    }
    obj.increase(5).increase(2).decrease(1);
    console.log(value); // 6

     

    W jQuery chcemy zwrócić “this” – jsFiddle demo:

    $.fn.redBorder = function () {
        $(this).css("border", "1px solid red");
        return this;
        
        //  or shorter "return $(this).css("border", "1px solid red");"
        
    };
    
    $.fn.greyBackground = function () {
        return $(this).css("background-color", "grey");
    };
    
    $.fn.innTxt = function (txt) {
        return $(this).html(txt);
    
    };
    
    
    $('#main').redBorder().greyBackground().innTxt("testing chaining");

     

     

  • JavaScript: jak znaleźć liczby pierwsze (prime numbers)

    Zacznijmy od tego co to są liczby pierwsze a później dopiero jak je znaleźć. Liczba pierwsza – liczba naturalna, która ma dokładnie dwa dzielniki naturalne: jedynkę i siebie samą.

    W naszym przykładzie wykorzystamy dwie funkcje:

    • jedna która sprawdza czy dana liczba jest liczba pierwsza
    • oraz drugą która przygotowuje jakiś zbiór tych liczb

    Funkcja, która pozwoli sprawdzić czy liczba jest liczbą pierwszą może wyglądać następująco:

    function isPrime(num) {
        if(num < 2) return false;
        for (var i = 2; i < num; i++) {
            if(num % i == 0)
                return false;
        }
        return true;
    }

    Kilka ważnych uwag:

    • zakłady, ze każda liczba poniżej 2 nie jest liczba pierwsza
    • jeśli liczba `num` nie jest mniejsza niż 2; próbujemy po kolei dzielić ją przez każdą liczbę mniejszą od `num`; np: jeśli `num = 5` to dzielimy przez 3 & 4

     

    Teraz dla przykładu chcemy uzyskać wszystkie liczby pierwsza mniejsze niż 100:

    var arr = [];
    for(var i = 0; i < 100; i++){
        if(isPrime(i)) { arr.push(i); }
    }
    console.log(arr);
    console.log(arr.length);

     

    Oraz kolejny przykład jak znaleźć 100 pierwszych liczb pierwszych:

    var arr = [];
    var x = 0;
    while(arr.length < 100){
        if(isPrime(x)) { arr.push(x); }
        x++;
    }
    
    console.log(arr);
    console.log(arr.length)