好的,所以我有一个像这样的数组。
myArray:Array []
myArray.push(Object) // x 4.
我的数组中有4个对象。然后我拼接第二个。给我一个看起来像这样的数组。 1,3,4。现在......我希望这个数组看起来像这样:1,2,3。我想3& 4把简单的开关放到一个较少的位置。
我知道这是可能的,几年前我有一个朋友为我做这件事。我该怎么做呢?
答案 0 :(得分:2)
我认为你在使用拼接时失败了。 splice和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 :(得分:0)
我想让这个数组看起来像这样:1,2,3
所以...只是pop()
最后一个元素:
myArray:Array = [1, 2, 3, 4];
myArray.pop();
trace(myArray); // Prints: 1,2,3
我想3& 4把简单的开关放到一个较少的位置。
嗯......这正是删除第二个元素的原因......
如果你想要的最终结果是第二个元素放在的末尾,那就是:
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));
答案 2 :(得分:0)
我运行了您的伪代码 - > 结果如下:
[object Cat],[object Mouse],[object Cow]
跟踪时没有索引..另一点,我有些代码
trace(arr[0] , arr[1], arr[2]);
我仍然得到
[object Cat],[object Mouse],[object Cow]
索引在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 {}