Я хочу создать функцию, которая модифицирует переменную на основе заданного аргумента.
Функция проверяет переменную и число в этой строке. Затем с помощью аргумента я указываю либо увеличить, либо уменьшить число на 1 (++ 1).
Также существует массив, который, если число равно длине массива, тогда он становится равным 1, а если число меньше 1, то оно равно размеру массива. Это сделано для того, чтобы номер строки не превышал 1 или больше длины массива.
строка с номером Music1
. Таким образом, круг будет выглядеть так:
...., Music1, Music2, Music3, Music4, Music1, Music2, Music3, ....
var MyArray = ["Music1", "Music2", "Music3", "Music4"];
var currentMusic = "Music1";
$(".increase").on('click tap', nextMusic);
$(".decrease").on('click tap', previousMusic);
function nextMusic() {
unaryChange('plus')
}
function previousMusic() {
unaryChange('minus')
}
function unaryChange(operation) {
if (currentMusic === "Music4") {
currentMusic = "Music1"
} else if (currentMusic === "Music0") {
currentMusic = "Music4"
}
if (operation === "plus") {
currentMusic = currentMusic.replace(/\d+$/, function(n) {
return ++n
});
} else {
currentMusic = currentMusic.replace(/\d+$/, function(n) {
return --n
});
}
console.log(currentMusic);
$(".text").text(currentMusic);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="increase">increase</button>
<button class="decrease">decrease</button>
<p class="text">value</p>
Вышеуказанный метод почти справляется со своей задачей, однако я ищу более простое и профессиональное решение. Это не выглядит эффективным. Например, должен быть лучший способ указать аргумент operation
вместо строки типа plus
или условий.
Мне нужно, чтобы эта функция была переписана лучше, более профессионально и работала, как описано.
Заранее спасибо.