var dic = new ActiveXObject("Scripting.Dictionary");
この Dictionary オブジェクトには、キーと項目の登録・削除、
キーがすでに存在しているか、キーと項目の配列を返す、
などの連想配列の基本的な機能が備わっています。
var dic = new ActiveXObject("Scripting.Dictionary");
dic.Add("さくら", "こんにゃく");
dic.Add("知世", "ピーマン");
1度登録したキーは削除されない限り登録はできません。
dic.Add("さくら", "こんにゃく");
dic.Add("さくら", "ゆうれい"); //エラー
ここで気をつけなければいけないのは、
キーは数値と文字列両方を取れるということです。
すなわち、数値の1と文字列の"1"はキーとして別個に取れます。
var dic = new ActiveXObject("Scripting.Dictionary");
dic.Add(1, "aaa");
dic.Add("1", "bbb");
dic.Add(1.1, "ccc"); //これも別
実はオブジェクトさえもキーにできます。
var ary = new Array(); dic.Add(ary, "ddd");項目のほうはもちろんなんでもOKです。
dic.Add(1, 1.1); dic.Add(2, "モダン焼き"); dic.Add(3, new Array(1, 2, 3));
var dic = new ActiveXObject("Scripting.Dictionary");
dic.Add("さくら", "ほえ");
alert(dic.Item("さくら"));
dic.Add("知世", 1.38);
alert(dic.Item("知世") + 1); //1.38+1
dic.Add("雪ちゃん", new Array(1, 3, 5));
alert(dic.Item("雪ちゃん")[2]); //配列の3番目の要素
Item プロパティは次のように登録にも使えます。
この場合は一度登録したあとでも登録しなおすことができます。
var dic = new ActiveXObject("Scripting.Dictionary");
dic.Item("さくら") = "ほえほえ";
dic.Item("さくら") = "ほえほえハッピー"; //OK
alert(dic.Item("さくら")); //あとに登録したほうが有効
Item プロパティは省略できます。
dic.Item("さくら") = "ほえほえ";
dic("さくら") = "ほえほえ";
上の2つは同等です。
objary = (new VBArray(objdic.Keys())).toArray();こうしておいてから順に取り出します。
dic = new ActiveXObject("Scripting.Dictionary");
//名前と点数を登録する
dic.Add("佐々木利佳", 348);
dic.Add("李小狼", 374);
dic.Add("木之本桜", 299);
dic.Add("大道寺知世", 421);
//全てのキーをArrayオブジェクトにする
var a = (new VBArray(dic.Keys())).toArray();
//点数の高い順にソートする
//ソートできないバグはいつのまにか直ったようですね
a.sort(new Function("a", "b", "return dic(b) - dic(a);"));
for(var i = 0; i < a.length; i++)
alert(a[i] + " : " + dic(a[i]));
objarr = (new VBArray(objdic.Items())).toArray();そのキーが登録済みかどうかは次のように調べます。
objdic.Exists(key);
登録されていれば true、
そうでなければ false を返します。
キーとそれと対になる項目を削除するには
Remove メソッドを使います。
objdic.Remove(key);
キーと項目を全て削除するには
RemoveAllメソッドを使います。
objdic.RemoveAll();
キーを別のキーに置き換えるにはKeyプロパティを
用います。
objdic.Key(key) = newkey;
項目数を得るにはCountプロパティを用います。
objdic.Count;
var dic = new Object();
dic["さくら"] = "こんにゃく";
alert(dic["さくら"]);
ネスケの場合は、適当に空のユーザー定義オブジェクトを作ってください。新JavaScript入門5 と JavaScriptサブルーチン集 も併せてご覧ください。