javascript - 如何在每次循环迭代中一个一个地移动数组的 3 个元素?

标签 javascript arrays loops recursion

我有一个数组[1,1,1,0](任意大小),数组和数字1的最小长度是3,我想一直移动1s的值1元素向上移动到 [0,1,1,1],然后返回到 [1,1,1,0]

我的循环在递归模式下工作,但我不确定如何重置值,所以在 4 次循环后,我的整个数组都填满了 0。

更长的数组将这样遍历:

例子:

[1,1,1,0,0,0]-> [0,1,1,1,0,0]-> [0,0,1,1,1,0]-> [0,0,0,1,1,1]-> 
[1,1,0,0,0,1]-> [1,1,1,0,0,0]-> [0,1,1,1,0,0]-> [0,0,1,1,1,0]->

以此类推……

代码:

function flip(images, active) {
    var new_active = active;

    setTimeout(function() {
        active.reverse();
        active[active.length] = 0;
        active.reverse();
        active.pop();

        for(var i = 0; i < active.length; i++) {
            alert(active[i]);
        }

        flip(images, active);
    }, 5000);
}

最佳答案

根据你想做的方向,我建议使用 shift()push() , 或 pop()unshift() .

基本上,shift()unshift() 从数组的前面添加或删除一个元素,而 push()pop() 从数组的后面添加或删除一个元素。

对于您给出的示例,您可能希望 pop() 离开数组的末尾并 unshift() 到前面:

function rotateArray(arr) {
    var element = arr.pop();
    arr.unshift(element);
}
// Repeat in loop, timeout, etc. as necessary

关于javascript - 如何在每次循环迭代中一个一个地移动数组的 3 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329491/

相关文章:

python - 如何使函数的返回值可迭代?

c++ - 如何从文本文件加载链表?

javascript - jQuery addClass 仅以编号方式添加到父 div

c++ - 二维数组的行和列是否从0开始?

javascript - 将多个字符串合并到一个参数中

javascript - 如何根据数组 AngularJS 中的元素更改 href

java - 非常简单的for循环错误Java

algorithm - 这个伪代码的时间复杂度是多少?

javascript - 我的脚本 src URL 是什么?

javascript - shift 鼠标点击触发