HOME>WEBプログラム覚書>ActionScript3 メモ3 [基礎]Arrayクラス

ActionScript3 メモ3 [基礎]Arrayクラス

ActionScript3の基礎勉強中。

Arrayクラス

sort()

要素は文字列として比較されるので文字コード順にソートされる。 比較関数が使える。

ActionScript

  1. var arr:Array = [2, 11, 45, 1, 5, 4];
  2.  
  3. arr.sort();
  4.  
  5. trace(arr);//1,11,2,4,45,5
  6.  
  7. arr.sort(function(a:Number, b:Number){
  8.     return a - b;
  9.  
  10. });
  11.  
  12. trace(arr);//1,2,4,5,11,45
  13.  
  14.  

forEach()

配列のすべての要素にコールバック関数を実行する。 引数は常に3つ渡さないとエラーになる。返り値は設定できない。

  • 配列の値
  • 配列のインデックス
  • Array オブジェクト

ActionScript

  1. var arr:Array = [2, 11, 45, 1, 5, 4];
  2.  
  3. arr.forEach(function(val:int, key:int, arr:Array):void {
  4.     trace(val + "*" + key + "=" + String(val * key));
  5.     arr[key] = val * key;
  6. });
  7.  
  8. trace(arr.toString());
  9.  
実行結果
2*0=0
11*1=11
45*2=90
1*3=3
5*4=20
4*5=20
0,11,90,3,20,20

ActionScriptでは関数名を渡すのが一般的なのかな? こんな感じで書いた場合、三番目の引数が省略できてthisでArrayが参照できれば気持ちいいかも。

返り値は設定できない。常にvoid。 値を返したい場合はmapを利用する。

map()

引数はforEachと同じ

ActionScript

  1. var arr:Array = [2, 11, 45, 1, 5, 4];
  2. var arr2:Array;
  3.  
  4. arr2 = arr.map(function(val:int, key:int, arr:Array):int {
  5.     trace(val + "+" + key + "=" + String(val + key));
  6.     return val + key;
  7. });
  8.  
  9. trace(arr2.toString());
  10.  
実行結果
2+0=2
11+1=12
45+2=47
1+3=4
5+4=9
4+5=9
2,12,47,4,9,9

map()は配列のすべての要素が返されるが 特定のものを返したい場合filter()を利用する。

不特定の数の引数

argumentsではなく... (rest)という形式が推奨されている。

... (rest)

ActionScript

  1. var func:Function = function(... args):int {
  2.     var sum:int = 0;
  3.     for (var i:int=0; i<args.length; i++) {
  4.         sum = sum + args[i];
  5.     }
  6.     return sum;
  7. }
  8.  
  9. trace(func(1,2,3,4,5,6,7,8,9)); //45
  10.  

連想配列

ArrayクラスではなくObjectクラスを使用するようにとのこと。

結合配列 (ハッシュとも呼ばれる) の作成には Array クラスを使用しないでください。結合配列は、数値エレメントではなく名前付きエレメントを含むデータ構造です。結合配列の作成には、Object クラスを使用してください。ActionScript では Array クラスを使用して結合配列を作成できますが、結合配列で Array クラスのメソッドやプロパティを使用できません。

Array - ActionScript 3.0 コンポーネントリファレンスガイド

javascriptと同じような感じ。

ActionScript

  1. var obj:Object = {sitename:"kantenna", siteurl:"www.kantena.com"};
  2. trace(obj["sitename"] + " : " + obj["siteurl"]); //kantenna : www.kantena.com
  3.  
投稿日 2009年7月11日 04:25
カテゴリ ActionScript
タグ Flash | 言語仕様
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1163

コメント

コメントする
Name
Email Address
URL