好的,所以我有一个这样的数组。
myArray:Array []
myArray.push(Object) // x 4.
我的数组中有 4 个对象。然后我拼接第二个。给我留下一个看起来像这样的数组。1,3,4。现在......我想让这个数组看起来像这样:1,2,3。我希望 3 和 4 能够简单地从他们自己的位置切换到少一个位置。
我知道这是可能的,几年前我有一个朋友为我做过。我该怎么做呢?
好的,所以我有一个这样的数组。
myArray:Array []
myArray.push(Object) // x 4.
我的数组中有 4 个对象。然后我拼接第二个。给我留下一个看起来像这样的数组。1,3,4。现在......我想让这个数组看起来像这样:1,2,3。我希望 3 和 4 能够简单地从他们自己的位置切换到少一个位置。
我知道这是可能的,几年前我有一个朋友为我做过。我该怎么做呢?
我认为你在使用拼接时失败了。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
我想让这个数组看起来像这样: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));
我运行了你的伪代码->结果如下:
[对象猫],[对象鼠标],[对象牛]
跟踪时没有索引..还有一点,我有一些代码
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 {}