Javascript 每次调用函数时使用不同的数组
我有一堆数组,看起来像Javascript 每次调用函数时使用不同的数组,javascript,Javascript,我有一堆数组,看起来像 var arr = [characterA, characterB, characterC]; var arr2 = [characterC, characterA, characterB]; var arr3 = [characterB, characterC, characterA]; 我正在用这些东西做一些不重要但看起来 arr[0].alignTo(columnLeft, Phaser.LEFT_CENTER); arr[1].alignIn(c
var arr = [characterA, characterB, characterC];
var arr2 = [characterC, characterA, characterB];
var arr3 = [characterB, characterC, characterA];
我正在用这些东西做一些不重要但看起来
arr[0].alignTo(columnLeft, Phaser.LEFT_CENTER);
arr[1].alignIn(columnLeft, Phaser.CENTER);
arr[2].alignTo(columnLeft, Phaser.RIGHT_CENTER);
它在一个叫做toggle的函数中
所以我要做的,基本上是,每次我调用这个函数。我使用一组不同的数组,所以在我执行arr[0]的时候,我应该如何编写它,以便每次调用函数时,它都使用arr2,然后使用arr3,然后再使用arr,依此类推
我已经为此争论了一天左右。如果您的意思是每次调用toggle都会使用其中一个arr,下一次调用将使用下一个arr2,下一次调用将使用下一个arr3,那么您可以将它们放在一个数组中,并记住要使用的下一个数组的索引:
// Outside the function
var arr = [characterA, characterB, characterC];
var arr2 = [characterC, characterA, characterB];
var arr3 = [characterB, characterC, characterA];
var arrays = [arr, arr2, arr3];
var index = 0;
// In the function:
toggle:function() {
var thisArray = arrays[index];
index = ++index % arrays.length; // Wraps around if necessary
thisArray[0].alignTo(columnLeft, Phaser.LEFT_CENTER);
thisArray[1].alignIn(columnLeft, Phaser.CENTER);
thisArray[2].alignTo(columnLeft, Phaser.RIGHT_CENTER);
timer.add(1000, this.toggle, this);
},
如果数组必须在toggle本身内部构建,我们只需将索引保持在外部,并只构建所需的数组:
// Outside the function
var index = 0;
// In the function:
toggle:function() {
var arr;
switch (index) {
case 0:
arr = [characterA, characterB, characterC];
break;
case 1:
arr = [characterC, characterA, characterB];
break;
case 2:
arr = [characterB, characterC, characterA];
break;
}
index = ++index % 3; // Wraps around if necessary
arr[0].alignTo(columnLeft, Phaser.LEFT_CENTER);
arr[1].alignIn(columnLeft, Phaser.CENTER);
arr[2].alignTo(columnLeft, Phaser.RIGHT_CENTER);
timer.add(1000, this.toggle, this);
},
你的意思是,每次调用toggle都会向我们显示其中一个arr,下一个调用将使用下一个arr2,下一个调用将使用下一个arr3?抱歉,may可能解释错了。是的,正如你所说的@T.J.crowder这三个调用,如alignTo等,应该使用相同的数组,只是不同的索引。因此,就像将数组中的第一项与用户对齐一样,第二项使用数组中的第二项,因此fourthI确实需要在toggle方法中构建数组,这很管用!index=++索引%arrays.length;应为index=++索引%arr.length@PourMeSomeCode:不,不应该它应该是3,我只是忘了为第二个代码示例更改它,现在已修复。这与我们拥有的案例数量有关,而不是arr中的项目数量,尽管巧合的是,这两个值都是3。
// Outside the function
var index = 0;
// In the function:
toggle:function() {
var arr;
switch (index) {
case 0:
arr = [characterA, characterB, characterC];
break;
case 1:
arr = [characterC, characterA, characterB];
break;
case 2:
arr = [characterB, characterC, characterA];
break;
}
index = ++index % 3; // Wraps around if necessary
arr[0].alignTo(columnLeft, Phaser.LEFT_CENTER);
arr[1].alignIn(columnLeft, Phaser.CENTER);
arr[2].alignTo(columnLeft, Phaser.RIGHT_CENTER);
timer.add(1000, this.toggle, this);
},