さて、私はこのような配列を持っています。
myArray:Array []
myArray.push(Object) // x 4.
配列に4つのオブジェクトがあります。次に、2番目のものを接続します。このような配列を私に残します。1,3,4。さて...この配列を次のようにしたいと思います:1,2,3。3と4を自分の位置から1つ少ない場所に簡単に切り替えたいと思います。
私はそれが可能であることを知っています、私は数年前に友人にそれをしてもらいました。どうすればよいですか?
さて、私はこのような配列を持っています。
myArray:Array []
myArray.push(Object) // x 4.
配列に4つのオブジェクトがあります。次に、2番目のものを接続します。このような配列を私に残します。1,3,4。さて...この配列を次のようにしたいと思います:1,2,3。3と4を自分の位置から1つ少ない場所に簡単に切り替えたいと思います。
私はそれが可能であることを知っています、私は数年前に友人にそれをしてもらいました。どうすればよいですか?
スプライスを使用すると失敗すると思います。スプライスとスライスは配列の異なるメソッドですスライスは元の配列を変更しませんが、スライスされたギャップを持つ新しい配列を返します
例
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を取得していますが、配列はまったく変更されていません。
スプライスは元の配列を変更します
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を自分の位置から1つ少ない場所に簡単に切り替えたいと思います。
うーん...それはまさに2番目の要素を削除することがすでに行ったことです...
必要な最終結果が、2番目の要素が最後に配置されることである場合、つまり、次のようになります。
Before: [1, 2, 3, 4] --> After [1, 3, 4, 2]
次に、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
スプライスが最初に発生するため、技術的にはこれを1つのステップで実行できます。
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 {}