HTML5テクニカルノート CreateJSの配列エレメントからインデックスを得るユーティリティ関数 − indexOf()
説明indexOf()はCreateJSにグローバルに定められた関数で、オブジェクトもクラスも参照せず、名前空間(createjs)に続けて直接呼出します。TweenJSを除く3つのライブラリに、JavaScript(JS)ファイルIndexOf.jsとして加えられています。それぞれのコンパクト(min)版JSファイルにも含まれます。 indexOf()関数は、第1引数に渡された配列から第2引数のエレメントを探し、そのインデックスの整数を返します。エレメントが複数あるときは若い番号のインデックス、見つからないときは-1が戻り値となります。同じ結果が得られるArray.indexOf()メソッドがJavaScript 1.6からの実装になるため[*1]、ユーティリティ関数として定められたと考えられます。
例つぎのJavaScriptコードは、indexOf()関数で配列(_array)からエレメント(element)を探し、初めに見つけたインデックス(index)を取出したうえで、警告ダイアログボックスに示します(図001)。
図001■初めに見つけた配列エレメントのインデックスが警告ダイアログボックスに示される indexOf()関数は、Container.removeChild()メソッドの実装にも用いられています。Container.removeChild()は、つぎのように内部的にContainer.removeChildAt()メソッドを呼出します。そのため、表示リストの配列(children)からindexOf()関数で引数の子インスタンスのインデックスを得ています(第3行目)。
実装indexOf()関数の実装は、つぎのように素直なのでわかりやすいでしょう。第1引数の配列のエレメントをforループで初めのインデックスから順に取出し、第2引数のエレメントと等しいかどうか評価します(第2〜3行目)。等しければループを終えてそのインデックスを戻り値とします(第4行目)。エレメントが見つからずにループが済んだときは-1を返します(第7行目)。
ひとつつけ加えると、エレメントが等しいかどうかは厳密な等価演算子===で比べています。したがって、データの型も含めて等しくなければなりません。 作成者: 野中文雄 Copyright © 2001-2013 Fumio Nonaka. All rights reserved. |
||||||||||||||||||