У меня проблема при использовании побитового в JavaScript. Я не знаю, пойду ли я по этому поводу неправильно. Но здесь идет.
У меня есть 4 основных категории. С идентификатором 1,2,4,8.
Элемент в моем объекте имеет свойство с общим количеством категорий, в которые он входит. то есть.
{ item: { name: 'lorem', c: 7 }} //member of category 1,2,4
У меня есть переменная (n), которая содержит объединенное количество активных категорий. В этом случае, если все категории активны, число равно 15.
Теперь, если я изменю n на 11 (категория 1,2,8 активна), я пытаюсь определить, какие элементы активны. Как это
for (x in items) {
item = items[x];
if ((n & item.c) == item.c) {
//active
} else {
//inactive
}
}
Это не работает должным образом. Например, если item.c равен 9 (член 1,8), оператор if вернет true. Как это должно. Но если item.c равен 7 (член 1,2,4), оператор if возвращает false. Это моя проблема. 7 должен вернуть true, поскольку категории 1 и 2 все еще активны.
Или это неправильный подход?
.. Фредрик