在JavaScript中循环读取数组值

Igo*_*tev 11 javascript arrays

我在JavaScript中有一个已定义这些值的数组:

var myStringArray = ["1","2","3","4","5","6","7","8","9","10"];
Run Code Online (Sandbox Code Playgroud)

当我第一次调用函数函数时,我需要得到这个:

1
2
3
Run Code Online (Sandbox Code Playgroud)

再次打电话给我需要:

4
5
6
Run Code Online (Sandbox Code Playgroud)

再次打电话:

7
8
9
Run Code Online (Sandbox Code Playgroud)

再次打电话:

10
1
2
Run Code Online (Sandbox Code Playgroud)

再次打电话:

3
4
5
Run Code Online (Sandbox Code Playgroud)

等等.你得到了重点,显示了数组中的3个值,如果我们在数组的末尾,请从头开始阅读......我有一个具有远程控制功能的应用程序,并且具有向下和向上键.当用户按下向下按钮从数组中获取这些值时,如上例所示,如果用户按下向上按钮,则需要从示例返回...所以在循环中读取数组(最后,数组从头开始读取,但始终显示三个值).

我尝试使用这个:

var myStringArray = ["1","2","3","4","5","6","7","8","9","10"];
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
    if (i<(6)) {
       console.log(myStringArray[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是下次我调用这段代码时,它会从数组的开头显示,而不是继续读取其他值...我需要第二个计数器吗?

Nop*_*ope 9

如果您可以在循环浏览原始数组时操作它,可以spliceconcat下面类似(或者如果需要保留原始数组,可以使用数组的克隆):

var myStringArray = ["1","2","3","4","5","6","7","8","9","10"];

var loopByX = function(x){
  var y = myStringArray.splice(0,x);
  myStringArray = myStringArray.concat(y);
  
  return y;
}

console.log(loopByX(3));
console.log(loopByX(3));
console.log(loopByX(3));
console.log(loopByX(3));
console.log(loopByX(3));
Run Code Online (Sandbox Code Playgroud)

如果你想要双向(就是你所说的那个?),正如评论中所提到的那样,你可以按照下面的方式进行,然后让你能够向后或向前进行,并且可以灵活地进行任意操作.数:

var myStringArray = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];

var loopByX = function(x) {
  var len = myStringArray.length;

  // Ensure x is always valid but you can add any behaviour here in that case yourself. As an example I return an empty array.
  if (Math.abs(x) > len) {
    return [];
  }

  var y = x > 0 ? myStringArray.splice(0, x) : myStringArray.splice(len + x, len);

  myStringArray = x > 0 ? myStringArray.concat(y) : y.concat(myStringArray);

  return y;
}

console.log(loopByX(20)); // invalid number
console.log(loopByX(-20)); // invalid number
console.log(loopByX(-3));
console.log(loopByX(-6));
console.log(loopByX(3));
console.log(loopByX(4));
Run Code Online (Sandbox Code Playgroud)