В статье будут рассмотрены 5 способов для для определения четности / нечетности строки в цикле. В качестве языка для примеров взят javascript. Некоторые из способов полностью переносимы в любые другие языки.
Этот способ, пожалуй, самый распространенный. Его можно встретить во всевозможных примерах, мануалах. Основывается он на четности и нечетности чисел (проверяем остаток от деления на двойку).
(Живой пример: jsfiddle.net/Freed0m/y799r )
Следующий способ основывается на простом математическом правиле — минус на минус дает плюс, плюс на минус — минус. На практике встречается реже чем первый, но все-таки встречается.
(Живой пример: jsfiddle.net/Freed0m/gm8D4 )
Данный способ определяет четность / нечетность простой проверкой бита.
В реальных проектах такого способа я не встречал, но все же он работает.
(Живой пример jsfiddle.net/Freed0m/gHWep )
Этот способ примитивен, его принцип заключается в том, что бы присваивать переменной типа boolean обратное значение в цикле. На практике встречается очень редко.
(Живой пример jsfiddle.net/Freed0m/jAejs )
Следующий способ основывается на css и для меня является приоритетным для использования. Не поддерживается только IE 7-8.
(Живой пример jsfiddle.net/Freed0m/Ub6qs )
Возможно, кто-то использует какой-нибудь свой оригинальный способ и захочет им поделиться. Пишите, добавлю в статью
Способ #1
Этот способ, пожалуй, самый распространенный. Его можно встретить во всевозможных примерах, мануалах. Основывается он на четности и нечетности чисел (проверяем остаток от деления на двойку).
var type = i % 2 != 0 ? 'odd' : 'even';
(Живой пример: jsfiddle.net/Freed0m/y799r )
Способ #2
Следующий способ основывается на простом математическом правиле — минус на минус дает плюс, плюс на минус — минус. На практике встречается реже чем первый, но все-таки встречается.
var tmp = -1;
/ ... /
var type = (tmp *= -1) > 0 ? 'odd' : 'even';
(Живой пример: jsfiddle.net/Freed0m/gm8D4 )
Способ #3
Данный способ определяет четность / нечетность простой проверкой бита.
В реальных проектах такого способа я не встречал, но все же он работает.
var type = i & 1 ? 'odd' : 'even';
(Живой пример jsfiddle.net/Freed0m/gHWep )
Способ #4
Этот способ примитивен, его принцип заключается в том, что бы присваивать переменной типа boolean обратное значение в цикле. На практике встречается очень редко.
var odd = true;
/ ... /
var type = odd ? 'odd' : 'even';
odd = !odd;
(Живой пример jsfiddle.net/Freed0m/jAejs )
Способ #5
Следующий способ основывается на css и для меня является приоритетным для использования. Не поддерживается только IE 7-8.
div:nth-child(odd)
{
color: red;
}
div:nth-child(even)
{
color: blue;
}
(Живой пример jsfiddle.net/Freed0m/Ub6qs )
Возможно, кто-то использует какой-нибудь свой оригинальный способ и захочет им поделиться. Пишите, добавлю в статью