Существует очень распространенная и простая задача циклической итерации по некоторому диапазону в обоих направлениях:
var currentIndex = 0;
var range = ['a', 'b', 'c', 'd', 'e', 'f'];
function getNextItem(direction) {
currentIndex += direction;
if (currentIndex >= range.length) { currentIndex = 0; }
if (currentIndex < 0) { currentIndex = range.length-1; }
return range[currentIndex];
}
// get next "right" item
console.log(getNextItem(1));
// get next "left" item
console.log(getNextItem(-1));
Приведенный выше код работает отлично, но я потратил около часа, пытаясь избавиться от двойной проверки if
.
Есть ли способ решить, если без, если?Вроде однострочник может быть?