【发布时间】:2019-10-10 14:22:12
【问题描述】:
我想创建一个根据给定参数修改变量的函数。
该函数检查一个变量和该字符串中的数字。然后通过参数,我指定将数字增加或减少 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 这样的字符串或条件。
我需要以更好的方式、更专业的方式重写此函数并按照描述的方式工作。
提前致谢。
【问题讨论】:
标签: javascript jquery html arrays function