Я полагаю, что вы добились успеха, пока ни один тест не прошел неправильно.Я думаю, это правильно, что я сделал, но я могу быть с затуманенным зрением в некоторых случаях, я надеюсь, что нет:
const addElementInMask = (element, newElement) => (element |= (1 << newElement));
const maskEqualsTargetMask = (mask, targetMask) => mask === targetMask;
const maskContainsAllElements = (mask, targetMask) => targetMask === (mask & targetMask);
const maskContainsNoneElements = (mask, targetMask) => mask === (mask & ~targetMask);
const maskContainsOneOrMoreElements = (mask, targetMask) => targetMask === (mask | targetMask) && !maskContainsNoneElements(mask, targetMask);
const maskContainsNoneOrMoreElements = (mask, targetMask) => targetMask === true;
const matchResult = (matchName, expression) => console.log(matchName+': '+expression);
const element1 = 1;
const element2 = 2;
const element3 = 3;
let mask = 0;
mask = addElementInMask(mask, element1);
mask = addElementInMask(mask, element2);
let targetMask = 0;
targetMask = addElementInMask(targetMask, element1);
targetMask = addElementInMask(targetMask, element2);
targetMask = addElementInMask(targetMask, element3);
console.log('Expected: false, false, false, true, true');
matchResult('maskEqualsTargetMask', maskEqualsTargetMask(mask, targetMask));
matchResult('maskContainsAllElements', maskContainsAllElements(mask, targetMask));
matchResult('maskContainsNoneElements', maskContainsNoneElements(mask, targetMask));
matchResult('maskContainsOneOrMoreElements', maskContainsOneOrMoreElements(mask, targetMask));
matchResult('maskContainsNoneOrMoreElements', maskContainsNoneOrMoreElements(mask, targetMask));