我在 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/