【发布时间】:2016-08-29 03:28:56
【问题描述】:
我想创建一个数组访问函数,如股票行情。它可以向任何方向循环移动,直到达到新值。
我是 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);
【问题讨论】:
-
你打算用循环做什么?我认为我从来不需要它来做任何事情。
-
请注意,
array.lp = (array.length + newPos) % array.length;在您的三种情况中的任何一种情况下都是一样的。 -
array.push(arr.shift());或array.pop(arr.unshift()); -
Halcyon,我有 2 个应用程序,第一个是带有自动收报机磁带的模型图灵机,第二个是播放歌曲(向前和向后)的音乐播放器......这是一个简单的功能,我正在寻找寻求更优雅的解决方案...
-
哈姆斯,很好,谢谢。删除并简化。
标签: javascript arrays loops oop