Я хочу проверить объект, который имеет три булевых свойства, один и только один, должны быть истинными. Каков наилучший способ проверить это?
Я придумал это:
var t1 = obj.isFirst ? 1 : 0,
t2 = obj.isSecond ? 1 : 0,
t3 = obj.isThird ? 1 : 0;
var valid = (t1 + t2 + t3) === 1;
Это прекрасно работает, но это немного похоже на решение для любителей :-)
Есть ли лучший способ сделать это? Например, используя XOR (^)?