KANTENNA.COM

Solarized

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

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

ActionScript3の基礎勉強中。

Arrayクラス

sort()

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

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

forEach()

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

  • 配列の値
  • 配列のインデックス
  • Array オブジェクト
PHP
  1.  <?php
  2.  var arr:Array = [2, 11, 45, 1, 5, 4];
  3.  
  4.  arr.forEach(function(val:int, key:int, arr:Array):void {
  5.   trace(val + "*" + key + "=" + String(val * key));
  6.   arr[key] = val * key;
  7.  });
  8.  
  9.  trace(arr.toString());
  10.  ?>
実行結果
実行結果
  1.  2*0=0
  2.  11*1=11
  3.  45*2=90
  4.  1*3=3
  5.  5*4=20
  6.  4*5=20
  7.  0,11,90,3,20,20

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

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

map()

引数はforEachと同じ

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

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

不特定の数の引数

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

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

連想配列

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

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

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

javascriptと同じような感じ。

PHP
  1.  <?php
  2.  var obj:Object = {sitename:"kantenna", siteurl:"www.kantena.com"};
  3.  trace(obj["sitename"] + " : " + obj["siteurl"]); //kantenna : www.kantena.com
  4.  ?>
ActionScript 3.0辞典 [FlashPlayer10/9対応]
作者:林 拓也 | 価格:¥ 3,129

トラックバック(0)

コメント

コメントする
Name
Email Address
URL
TIME LINE
2012
02.10

[雑記]縦横がランダムな要素を隙間なく並べるのは無理なのか。

サイトマップ作ったんだけど、やりたかったことが出来なかった。

2012
02.08

[Ubuntu11.10]Winows XPユーザーがUbuntuを使ってみて

Windows XPとUbuntuのデュアルブート環境にしてみておもったこと。

2012
02.03

[jQuery]closest()とparents()

今から16年前Netscapeブラウザのソースコードの公開方法の会議の中で、初めてオープンソースという言葉が使われた今日、 みなさんいかがお過ごしでしょうか。

今回の投稿はそれとは関係のないjQueryのparents()とclosest()が 似てたので何が違うのか試した時のメモです。

2012
02.01

[jQuery Mobile]初期化イベントメモ

jQuery Mobileは読み込まれてから

mobileinit -> pagebeforecreate -> pagecreate -> pageinit

の順番でイベントが発生する。

2012
02.01

[WordPress]管理画面のフッタのフィルタとアクション。

時間も時間なので、あまり使用頻度の高くない微妙なネタを。

会員制サイトなどで不特定多数の人にログインさせる場合、フッタのバージョン情報は隠しておきたかったり、 こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。

2012
01.28

[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

2012
01.26

[jQuery Mobile]ダイアログ

jQuery Mobileにおけるダイアログの扱いはウインドウではなくページ。 なので通常のページと同様に扱える。ダイアログウインドウを出す。じゃなくダイアログページに遷移する。的な。

2012
01.25

[Ubuntu11.10]Ubuntuのインストール後の設定

インストール完了後の環境構築。PC起動時いちいちBIOSからブートドライブ選んで ブートするのかと思ってたら起動時にOS選択画面が出てくる。

すばらしいですね。

2012
01.24