感谢这个很棒的网站使用Nope的出色代码,我得到了以下代码:

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


效果很好...我将其添加到HTML5应用程序中,看到我对输出示例的描述有些错误,因此我需要获取以下输出:

1
2
3

2
3
4

3
4
5

4
5
6

5
6
7

6
7
8

7
8
9

8
9
10

9
10
1

10
1
2

1
2
3


所以使用上面的代码来获得减去一或加一的值(按下向上或向下按钮,所以它被称为双向),我向上或向下获得3个项目,并且它起作用..但是我看到我在复制粘贴代码时需要得到一个项在循环中向上或向下...如果可以完成修改代码来做到这一点...我尝试在函数和y-1中执行x-1,但这不会在示例输出中给我...

所以我需要我可以调用loopByX(3)的函数和多个调用函数,它将在循环中向左移动一位,并调用多个功能loopByX(-3)在循环中向右移动一位...需要修改的地方归档以上输出?

非常感谢。

最佳答案

您可以采用双精度数组和调整后的索引。



function take(direction) {
    index += direction + array.length;
    index %= array.length;
    console.log(array.concat(array).slice(index, index + 3).join(' '));
}

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

<button onclick="take(-1)">-</button>
<button onclick="take(1)">+</button>





使用<div> ... </div>



function take(direction) {
    index += direction + array.length;
    index %= array.length;
    console.log(
        array
            .concat(array)
            .slice(index, index + 3)
            .map(v => `<div>${ v }</div>`)
            .join('')
    );
}

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

<button onclick="take(-1)">-</button>
<button onclick="take(1)">+</button>

09-18 19:07