Вы можете просто сопоставить чек и вернуть либо переключенное значение, либо undefined
.
. Он работает, проверяя значение элемента, и принимает триггер с объектоми значение pos
.Это значение изменяется путем присвоения нового значения pos
, принимая pos
в качестве средства доступа к свойству для объекта.
rl = { right: 'left', left: 'right' }
pos = 'right';
pos = rl[pos]; // left
pos = rl[pos]; // right
pos = rl[pos]; // left
pos = rl[pos]; // right
// and so on ...
Если элемент не является truey , затем undefined
сопоставляется с набором результатов.
var truthArray = [false, true, false, true],
lr = { right: 'left', left: 'right' },
pos = 'right',
positionArray = truthArray.map(b => b ? pos = lr[pos] : undefined);
console.log(positionArray);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Для получения другого шаблона, например
['left', 'left', 'right', 'right']
, вы можете увеличить индекс и настроить его с помощью оператора остатка и получить битовый битзначение справа, которое делит значение на 2
и возвращает целочисленное значение.
var truthArray = [true, false, true, false, true, false, true, false, true],
lr = ['left', 'right'],
pos = 3,
positionArray = truthArray.map(b => b ? lr[++pos, (pos %= 4) >> 1] : undefined);
console.log(positionArray);
.as-console-wrapper { max-height: 100% !important; top: 0; }