0

好的,所以我有一个这样的数组。

myArray:Array []

myArray.push(Object) // x 4. 

我的数组中有 4 个对象。然后我拼接第二个。给我留下一个看起来像这样的数组。1,3,4。现在......我想让这个数组看起来像这样:1,2,3。我希望 3 和 4 能够简单地从他们自己的位置切换到少一个位置。

我知道这是可能的,几年前我有一个朋友为我做过。我该怎么做呢?

4

3 回答 3

2

我认为你在使用拼接时失败了。splice 和 slice 是数组 slice 的不同方法,不会更改原始数组,而是返回具有切片间隙的新数组

例子

var arr:Array = ["Cat","Dog", "Mouse", "Cow"];
trace(arr.slice(1,3));// output : Dog,Mouse
trace(arr.slice(2));//output: Mouse,Cow
trace(arr) //output: Cat,Dog,Mouse,Cow

所以当你调用 arr[3] 你得到 Cow 但你的数组根本没有改变

splice 修改您的原始数组

var arr:Array = ["Cat","Dog", "Mouse", "Cow"];
arr.splice(1,1); // output: 0->Cat,1->Mouse,2->Cow
于 2012-09-28T20:44:42.490 回答
0

我想让这个数组看起来像这样:1,2,3

所以......只是pop()最后一个元素:

myArray:Array = [1, 2, 3, 4];
myArray.pop();
trace(myArray);  // Prints: 1,2,3

我希望 3 和 4 能够简单地从他们自己的位置切换到少一个位置。

嗯...这正是删除第二个元素所做的...

如果您想要的最终结果是将第二个元素放在end,即:

Before: [1, 2, 3, 4]  --> After [1, 3, 4, 2]

然后,您可以分两步执行此操作:

var spliced = myArray.splice(1, 1); // Remove the second element and return it 
myArray.push(spliced);              // Push it to the end of the array

从技术上讲,您可以一步完成,因为拼接将首先发生:

myArray.push(myArray.splice(1, 1));
于 2012-09-28T19:13:26.887 回答
0

我运行了你的伪代码->结果如下:

[对象猫],[对象鼠标],[对象牛]

跟踪时没有索引..还有一点,我有一些代码

trace(arr[0] , arr[1], arr[2]);

我仍然得到

[对象猫],[对象鼠标],[对象牛]

索引在 AS3 中自动正常。

package regression 
{
    import flash.display.Sprite;
    /**
     * ...
     * @author Arthur Wulf White
     */
    public class Check_array_index_test_1 extends Sprite
    {

        public function Check_array_index_test_1() 
        {
            var arr: Array = new Array();
            arr.push(new Cat, new Dog, new Mouse, new Cow);
            trace(arr);
            arr.splice(1, 1);
            trace(arr);
                    trace(arr[0] , arr[1], arr[2]);
        }

    }

}

class Cat { }
class Dog { }
class Mouse { }
class Cow {}
于 2012-09-28T20:34:31.790 回答