javascript - 在 JavaScript 中循环读取数组值

标签 javascript arrays

我在 JavaScript 中有一个数组,其中定义了这些值:

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

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

1
2
3

再次调用它我需要得到:

4
5
6

再次调用:

7
8
9

再次调用:

10
1
2

再次调用:

3
4
5

等等。你明白了,显示了数组中的 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]);
    }
}

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

最佳答案

如果您可以在循环遍历原始数组时操作原始数组,则可以像下面那样拼接concat(或者您可以使用数组的克隆,如果您需要保留原始数组):

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));

如果你想双向(你怎么调用它?),正如评论中提到的,你可以按照下面的方式进行,这样你就可以向后或向前移动,并且可以灵活地这样做任意数量:

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));

关于javascript - 在 JavaScript 中循环读取数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50469150/

相关文章:

javascript - AngularJS 根据 id 显示值

javascript - Parallel.js 如何在 Javascript 中进行多线程编程?

php - 如何在 PDO 中创建具有列名的多维数组

javascript - 将条件方程从中缀转换为前缀表示法

javascript - 带有缩放到顶部的 float 标题,如 theverge.com

javascript - MVC 4 EditorFor bool 复选框始终发布 True

coldfusion - 在 coldfusion 中创建数组

c++ - 在头文件中声明一个类,并根据用户输入初始化该类的数组

javascript - 将二维数组转换为多边形点

java - Test2 数组初始化错误