5 способов для определения оdd / even в web-приложении

В статье будут рассмотрены 5 способов для для определения четности / нечетности строки в цикле. В качестве языка для примеров взят javascript. Некоторые из способов полностью переносимы в любые другие языки.


Способ #1
Этот способ, пожалуй, самый распространенный. Его можно встретить во всевозможных примерах, мануалах. Основывается он на четности и нечетности чисел (проверяем остаток от деления на двойку).

<code class="javascript">var type = i % 2 != 0 ? 'odd' : 'even';
</code>
(Живой пример: jsfiddle.net/Freed0m/y799r/ )

Способ #2
Следующий способ основывается на простом математическом правиле — минус на минус дает плюс, плюс на минус — минус. На практике встречается реже чем первый, но все-таки встречается.

<code class="javascript">var tmp = -1;
/ ... /
var type = (tmp *= -1) > 0 ? 'odd' : 'even';
</code>
(Живой пример: jsfiddle.net/Freed0m/gm8D4/ )

Способ #3
Данный способ определяет четность / нечетность простой проверкой бита.
В реальных проектах такого способа я не встречал, но все же он работает.

<code class="javascript"> var type = i & 1 ? 'odd' : 'even';
</code>
(Живой пример jsfiddle.net/Freed0m/gHWep/ )

Способ #4
Этот способ примитивен, его принцип заключается в том, что бы присваивать переменной типа boolean обратное значение в цикле. На практике встречается очень редко.

<code class="javascript">var odd = true;
/ ... /
var type = odd ? 'odd' : 'even';
      odd = !odd;
</code>
(Живой пример jsfiddle.net/Freed0m/jAejs/ )

Способ #5
Следующий способ основывается на css и для меня является приоритетным для использования. Не поддерживается только IE 7-8.

<code class="css">div:nth-child(odd)
{
    color: red;
}
div:nth-child(even)
{
    color: blue;
}
</code>
(Живой пример jsfiddle.net/Freed0m/Ub6qs/ )

Возможно, кто-то использует какой-нибудь свой оригинальный способ и захочет им поделиться. Пишите, добавлю в статью


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.