ActionScript3.0 配列操作
久しぶりの記事.
またもうすぐテストがあるんだけどね><
とりあえずAS3.0の配列周りまとめてみたりしてみる.
はてな記法ほとんど忘れた\(^o^)/
配列生成
//その1 var hoge:Array; hoge = new Array: //その2 var hoge:Array = new Array(n); //nは要素数. なしでもok.要素数が動的に変化する hoge[0] = "piyo"; hoge[1] = "miko"; //その3 var hoge:Array; hoge = new Array("piyo","miko","shine"); //その4 var hoge = ["piyo","miko","shine"]; //その5 var hoge:Array = new Array("piyo","miko","shine");
などなど
データ型の指定は無し.同じ配列内に別のデータ型いれてもよし.
配列操作メソッド
sort
var hoge:Array = new Array(3,40,5,10,100,8,2); // 配列インスタンス生成 hoge.sort(); //sortメソッド使用 /* sort()メソッドの引数には比較関数を指定する.無い場合には文字コード順にソートされる. 上記の場合だと,ソート結果は[10,100,2,3,40,50,8]となる 比較関数の戻り値は 2つの値を比べ,初めの値の方が小さければ,負の値(-1),大きければ正の値(1),等しければ0を返す. */ //比較関数を使用し,値を昇順でソートする. hoge.sort(piyo); trace(hoge); funciton piyo(a:Number,b:Number):int { return a - b; }
join
var hoge:Array = new Array("miko","miko",""); //インスタンス生成 var piyo:String; piyo = hoge.join("さん"); trace(piyo); /* 実行結果は,「mikoさんmikoさん」となる. 配列内の要素をjoinの引数(String型)と連結させる. *[ActionScript][ActionScript]/
その他ダイジェストー
reverse():Array ・・・配列内の要素の逆転
forEach(callback):void ・・・配列の各要素に対して指定した関数を実行する(コールバック関数)
map(callbacl):Array ・・・配列の各要素に対して指定した関数を実行し,結果を別の配列に格納する
filter(callback):Array ・・・関数の結果に応じて要素を取り出す
他 concat() every() push() shift() pop() unshift() などなど
いっぱいあるので,また書きます.
連想配列
配列の要素に添字の代わりにキーを指定する.
生成
//その1 var hoge:Object = new Object(); hoge["piyo"] = "miko"; // "piyo"というキーの連想配列に"miko"という文字列代入. //その2 var hoge:Object = new Object(); hoge.piyo = "miko"; //その3 var hoge:Object = {piyo:"miko",huga:"mikomiko"}; //その4 var hoge:Array = new Array(); hoge["piyo"] = "miko"; hoge.piyo2 = "miko";
アクセス
for-in と for each-in
違いは前者は連想配列からキー名を取り出して変数に格納.ただし取り出される順はなぜかランダム.
後者は値を順に取り出して変数に格納.
//for-in var hoge:Object = new Object(); hoge.hoge1 = "miko1"; hoge.hoge2 = "miko2"; hoge.hoge3 = "miko3"; for(var i:String in hoge) { trace(i); //キーを表示 この場合, hoge1 hoge2 hoge3 がランダムな順で表示される } //for each-in var hoge:Object = new Object(); hoge.hoge1 = "miko1"; hoge.hoge2 = "miko2"; hoge.hoge3 = "miko3"; for each(var i:String in hoge) { trace(i); //値を表示 この場合,miko1 miko2 miko3が順に表示される.
連想配列はこんなもん.
でも,オブジェクトリテラル(var hoge:Object = {~~~~~~};)で宣言した連想配列を for each-inでしたらランダムになったり,
for each-inで値取り出せるのは統一された型の時だけで不便(?)だったり.
色々問題点的なものを見つけました><
似たような記事が(JavaScriptばーじょん)id:amachangさんの所にありました.JS使いの人は是非こちらを参考に><
JavaScript の配列と連想配列の違い - IT戦記
そういえば,はてな記法のシンタックスハイライトがActionScript対象外ってどういうことだ>< ぷんすか.