トップページ >  javascript >  Dictionary
初版2013/01/16: 最終更新日2013/01/16
  Dictionary
目次
Dictionary
Dictionaryのキー
Dictionaryのメソッド
Dictionary
javascriptのクラスでDictionaryというのがあります。これはほとんど連想配列と同じです。
ただし、Chrome23では使えず、ActiveXObject is not definedとエラーが表示されます。IE8では動作します。
Dictionaryクラスの宣言は以下のように宣言します。

var dictionary = new ActiveXObject("Scripting.Dictionary");

DictionaryクラスのAddメソッドを使用してキーと値を入れます。記述方法は以下のようにします。

dictionary.Add(キー,値);

連想配列なので、キーから値を取得することができます。これはItemメソッドを使用します。記述方法は以下のようにします。

dictionary.Item(キー);

Keysメソッドを使用して、全キーを格納したVBArray配列を返します。VBArrayではなくArrayを返したい場合、記述方法は以下のようにします。

var arr = (new VBArray(dictionary.Keys())).toArray();


以下、AddとItemとKeysの例です。



以下、ソースです。

<script type="text/javascript">
<!--
function a(){
    var dictionary = new ActiveXObject("Scripting.Dictionary");
    dictionary.Add("test1","100");
    dictionary.Add("test2","200");

    var arr = (new VBArray(dictionary.Keys())).toArray();
    for(i in arr){
        alert(arr[i]);
    }
}
//-->
</script>

Dictionaryのキー
Dictionaryのキーは型を区別します。1と"1"は違うキーとして扱います。
Addする時に以下のようにAddしています。その時の値をItemsメソッドを使用して取得しています。

dictionary.Add("1","100");
dictionary.Add(1,"200");

以下、例です。



以下、ソースです。

<input type="button" value="ボタン" onclick="b();" />
<script type="text/javascript">
<!--
function b(){
    var dictionary = new ActiveXObject("Scripting.Dictionary");
    dictionary.Add("1","100");
    dictionary.Add(1,"200");

    var arr = (new VBArray(dictionary.Items())).toArray();
    for(i in arr){
        alert(arr[i]);
    }
}
//-->
</script>

Dictionaryのメソッド
Dictionaryの他のメソッドですが、Addの反対がRemove(キー)です。
全ての連想配列を削除するにはRemoveAll()を使用します。
Key(キー) = 新しいキーとするとキーを変更することができます。
また、Item(キー) = 新しい値とすると値を変更することができます。
存在確認はExists(キー)でtrueなら存在しているキーになります。

以下、例です。



以下、ソースです。

<script type="text/javascript">
<!--
function c(){
    var dictionary = new ActiveXObject("Scripting.Dictionary");
    dictionary.Add("1","100");
    dictionary.Add(1,"200");

    dictionary.Remove(1);
    if(dictionary.Exists("1")){
        alert("キー=\"1\"は存在します");
    }
    if(!dictionary.Exists(1)){
        alert("キー=1は存在しません");
    }

    // キーを変更
    dictionary.Key("1") = "2";
    // 値を変更
    dictionary.Item("2") = "test変更";

    var arr = (new VBArray(dictionary.Items())).toArray();
    for(i in arr){
        alert(arr[i]);
    }

    var arr = (new VBArray(dictionary.Keys())).toArray();
    for(i in arr){
        alert(arr[i]);
    }
}
//-->
</script>