我想创建一个像自动收报机磁带一样的数组访问功能。它可以在任何方向上移动,直到它达到新值。
我是JS的新手。我想出了这个解决方案,但感觉太可怕了。我想知道是否有人有更好的解决方案。
var pet = ['dog', 'cat', 'rat', 'horse', 'mouse'];
function loop(posChange, array) {
if (isNaN(array.lp)) {
array.lp = 0;
};
var newPos = array.lp + posChange;
array.lp = (array.length + newPos) % array.length;
return array[array.lp];
};
loop(2, pet);
编辑(删除多余的if语句)。为了清楚起见,想象一下有5首歌曲循环播放的音乐播放器。我想前进3首歌曲,得到结果,再转发2首然后回1.这是最好的方法吗?
var song = ['songa', 'songb', 'songc', 'songd', 'songe'];
function loop(posChange, array) {
if (isNaN(array.lp)) {
array.lp = 0;
};
var newPos = array.lp + posChange;
array.lp = (array.length + newPos) % array.length;
return array[array.lp];
};
loop(3, song);
loop(2, song);
loop(-1, song);
答案 0 :(得分:0)
使用模数运算符。
function loop (posChange, array) { array.lp = array.lp || 0; array.lp = (array.lp + posChange) % array.length; return array[array.lp]; }