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