配列操作メソッド

Dojoには、配列 (もしくは類似のオブジェクト) を操作するための以下のようなメソッドが揃っている。

dojo.indexOf(array, value, fromIndex, findLast)

配列array内に値valueが格納されている位置を返す。見つからない場合は-1が返る。fromIndex (検索開始位置) とfindLast (検索終了位置) は省略可能。以下のようにして使用する。

 var array = ['tanaka', 'shiraishi', 'kikuchi'];
 // 配列array内で、'shiraishi'が出現する位置を返す
 var index = dojo.indexOf(array, 'shiraishi');

dojo.lastIndexOf(array, value, fromIndex)

配列array内で値valueが最後に出現する位置を返す。

dojo.forEach(array, callback, thisObject)

配列arrayをループ処理しながら、関数callbackを呼び出す。callbackは「function (配列要素, インデックス、配列自身)」という形式。最後の引数thisObjectは、コールバック関数内での「this」が参照するオブジェクト (省略可)。 以下のように使用する。

 var array = ['tanaka', 'shiraishi', 'kikuchi'];
 // 配列内の要素をデバッグする
 dojo.forEach(array, function(value, index) {
   console.debug(index + "番目の要素は:" + value);
 });

dojo.every(array, callback, thisObject)

配列内の全ての要素が、callbackの条件を満たすかどうかをBooleanで返す。コールバックの書式はforEach()メソッドと同じだ。以下のように使用する。

 var array = ['tanaka', 'shiraishi', 'kikuchi'];
 // 配列内の要素が全て5文字以上であるかどうかをテストする
 var b = dojo.every(array, function(value) {
   return value.length >= 5;
 });

dojo.some(array, callback, thisObject)

配列内に、callbackの条件を満たす要素があるかどうかをBooleanで返す。以下のように使用する。

 var array = ['tanaka', 'shiraishi', 'kikuchi'];
 // 5文字以上の要素が配列内に存在するかどうかをテストする
 var b = dojo.some(array, function(value) {
   return value.length >= 5;
 });

dojo.map(array, callback, thisObject)

配列内の要素一つ一つに対してcallbackを呼び出し、callbackが返した値から成る新しい配列を生成する。以下のように使用する。

 var array = ['tanaka', 'shiraishi', 'kikuchi'];
 // 配列内の要素をすべて大文字に変換した新しい配列を作成する
 var newArray = dojo.map(array, function(value) {
   return value.toUpperCase();
 });

dojo.filter(array, callback, thisObject)

callbackの条件を満たす要素のみを格納した新しい配列を生成する。以下のように使用する。

 var array = ['tanaka', 'shiraishi', 'kikuchi'];
 // 配列内の、5文字以上の要素からなる新しい配列を作成する。
 var newArray = dojo.filter(array, function(value) {
   return value.length >= 5;
 });

Dojoの設定用変数「djConfig」

ページをまたがってしまって申し訳ないが、先のサンプルでdojo.jsを読み込んでいる<script>タグをもう一度見ていただきたい。「djConfig」という属性を付与しているのがお解りだろう。

djConfigは、Dojoの設定を行うための変数だ。属性の中はJSON形式で記述する。ここでは「isDebug: true」と指定し、デバッグ出力をONにしている。

djConfigは、以下のようにJavaScript変数として作成することもできる。この場合は、変数の宣言をdojo.jsを読み込むscriptタグよりも前に行う必要がある。

 <script type="text/javascript">
  var djConfig = {
    isDebug: true
  };
 </script>

djConfigは、Dojoのいたるところで参照されているため、設定できる項目を全て拾い上げるのは難しい。筆者が意味まで把握しているのは今のところ以下のようなものだ。

  • locale : 現在のロケール (国際化フレームワークが利用)
  • baseUrl : スクリプトのルートディレクトリ (モジュール読み込みに影響)
  • isDebug : デバッグ出力を行うかどうか
  • useXDomain : Dojoのスクリプトファイルをクロスドメインで使用しているかどうか
  • debugAtAllCosts : 処理にかかったコストを全てデバッグ出力する
  • require : 必要なモジュールを配列で指定 (dojo.requireと同じ)
  • modulePaths : モジュールの検索先を配列で複数指定
  • extraLocale : 主ロケールが見つからない場合に使用するロケール
  • parseOnLoad : onLoad時にDOMをパースするか (Dijitやdojo.queryでは必須)