Znajdź, czy zmienna jest podzielna przez 2


128

Jak sprawdzić, czy zmienna jest podzielna przez 2? Ponadto muszę wykonać funkcję, jeśli tak jest, i wykonać inną funkcję, jeśli nie jest.


6
@SilentGhost: czy ludzie naprawdę dostają dziś prace domowe z jQuery?
Andy E

4
nie wiem o tym Andy, ale ludzie na pewno wiedzą, jak zepsuć swoje tagi.
SilentGhost

2
@OP: jQuery nie jest odpowiedzią na wszystko, co możesz chcieć zrobić w JavaScript;)
Mike Atlas

8
@Mike Wrong! Powinieneś użyć do tego podstawowej arytmetycznej wtyczki jQuery! To jest droga ...: P (Ironia)
Pablo Cabrera

Odpowiedzi:


312

Użyj modułu:

// Will evaluate to true if the variable is divisible by 2
variable % 2 === 0  

30
kocham to! proste, łatwe i nie sprawiłeś, że poczułem się jak idiota, zadając pytanie ... co (dla wszystkich innych, którzy jeszcze nie wiedzą) jest wielką sprawą dla nowych programistów jQuery / Javascript.
sadmicrowave

6
@sadmicrowave: w pewnym momencie wszyscy zaczynamy jako początkujący. Prawdziwym problemem jest brak samouczków informacyjnych. Samouczki dla absolutnie początkujących powinny wyjaśnić różnicę między JavaScript a jQuery i po prostu zanurzyć się bezpośrednio w jQuery.
Andy E

3
Pierwszy kod, jaki kiedykolwiek napisałem, był w JavaScript i był to wyskakujący komunikat powitalny. Był rok 1997 i to na mojej stronie domowej Geocities. Na pewno wszyscy od czegoś zaczynamy (choć trochę formalnego treningu też pomaga).
Mike Atlas

nie powinno być: zmienna% 2 == 0 Poinformuj mnie, jeśli się mylę.
Sean Tank Garvey

28

Poważnie, nie ma wtyczki jQuery do sprawdzania nieparzystych / parzystych?

Cóż, już nie - wypuszczenie "Oven" wtyczki jQuery na licencji MIT w celu sprawdzenia, czy podana liczba jest nieparzysta / parzysta.

Kod źródłowy jest również dostępny pod adresem http://jsfiddle.net/7HQNG/

Zestawy testów są dostępne pod adresem http://jsfiddle.net/zeuRV/

(function() {
    /*
     * isEven(n)
     * @args number n
     * @return boolean returns whether the given number is even
     */
    jQuery.isEven = function(number) {
        return number % 2 == 0;
    };

    /* isOdd(n)
     * @args number n
     * @return boolean returns whether the given number is odd
     */
    jQuery.isOdd = function(number) {
        return !jQuery.isEven(number);
    };
})();​

7
Łał. Zabawne, ale zdajesz sobie sprawę, że ktoś faktycznie tego użyje?
Tim Down

7
@Tim Down: Zastanawiam się, czy ktoś używa tej podstawowej wtyczki arytmetycznej jQuery ? Następny na liście generator liczb losowych jQuery ;-)
Andy E

9
Jest tak wiele, co jQuery może zrobić, na przykład tworzenie zmiennych, funkcji itp., Co wciąż jest wykonywane za pomocą surowego JavaScript . Po prostu niewiarygodne ;-)
Anurag

4
@Andy - ROFL pod tym linkiem i obraz SO - doxdesk.com/img/updates/20091116-so-large.gif Wydaje mi się, że odpowiedź „użyj jQuery” osiągnie teraz najwyższy poziom w Javascript :)
Anurag

Masz dokument tekstowy, wyjaśnij, użyj go? @Anurag
Todd


11

Możesz użyć operatora modułu w ten sposób, nie ma potrzeby używania jQuery. Po prostu zastąp go alertsswoim kodem.

var x = 2;
if (x % 2 == 0)
{
  alert('even');
}
else
{
  alert('odd')
}

11

Możesz to zrobić w lepszy sposób (do 50% szybciej niż operator modulo):

nieparzyste: x & 1 parzyste:! (x & 1)

Odniesienie: Wysokowydajny JavaScript, 8. -> Operatory bitowe


To świetna, właściwie najlepsza odpowiedź. Wymaga to jednak znajomości operatorów bitowych ...
Sean Tank Garvey


4
var x = 2;
x % 2 ? oddFunction() : evenFunction();

Myślę, że ten kod jest zły / wadliwy. Deklarujesz wartość zmiennej x (konkretnie oznacza to, że x jest zawsze równoważne liczbie 2). Pierwszy błąd. Następnie następny wiersz mówi po prostu, czy zmienną x można podzielić przez 2, a następnie wykonaj oddFunction, w przeciwnym razie / if-not wykonaj evenFunction ... Problem z tym podejściem polega na tym, że zawsze da ono wartość evenFunction - nigdy nie oddFunction - to kolejny problem / błąd. Proszę, poucz mnie, jeśli się mylę.
Sean Tank Garvey


2

Mam nadzieję że to pomoże.

let number = 7;

if(number%2 == 0){      

  //do something;
  console.log('number is Even');  

}else{

  //do otherwise;
  console.log('number is Odd');

}

Oto pełna funkcja, która będzie logować do konsoli parzystość wprowadzonych danych.

const checkNumber = (x) => {
  if(number%2 == 0){      

    //do something;
    console.log('number is Even');  

  }else{

    //do otherwise;
    console.log('number is Odd');

  }
}

1

W konsoli wpisz następujący kod:

var isEven = function(deep) {

  if (deep % 2 === 0) {
        return true;  
    }
    else {
        return false;    
    }
};
isEven(44);

Uwaga: Zwróci wartość true, jeśli wprowadzona liczba będzie nawet fałszywa.


1
dzięki za odpowiedź, ale jest to zasadniczo to samo, co zaakceptowana odpowiedź, po prostu opakowałeś ją w funkcję. W każdym razie dzięki za wkład
sadmicrowave

1

Użyj modułu, ale .. Powyższa zaakceptowana odpowiedź jest trochę niedokładna. Uważam, że ponieważ x jest typem liczbowym w JavaScript, operator powinien być podwójnym przypisaniem zamiast potrójnego przypisania, na przykład:

x % 2 == 0

Pamiętaj, aby zadeklarować również swoje zmienne, więc oczywiście tej linii nie można zapisać samodzielnie. :-) Zwykle używane jako ifoświadczenie. Mam nadzieję że to pomoże.


-2

tablica = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

array.each {| x | wstawia x, jeśli x% 2 == 0}

rubin: D

2 4 6 8 10


1
Wędrowałeś z 4chan?
Todd
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.