配列操作メソッド
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では必須)