我有一个数组[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/