4-3 �r�媫��

¤@¯ëªº°}¦C¬O¥H´`§Çªº¼Æ­È¨Ó¶i¦æ¯Á¤Þ¡A¦ý¬O¦r¨åª«¥ó¡]Dictionary¡^¬O¥H¦r¦ê¨Ó¶i¦æ¯Á¤Þ¡]©Î¬O¥H¦r¦ê¬°Áä­È¡^¡A©Ò¥H§Ú­Ì¥i¥H±N¦r¨åª«¥ó¬Ý¦¨¬O¥Ñ¦r¦ê¨ì¦r¦êªº¨ç¼ÆÃö«Y¡A´N¹³¬O¤@¥»¦r¨å¤@¼Ë¡A§Ú­Ì¥i¥H¥ý§ä¨ì¤@­Ó¦r¡]©Îµü·J¡^¡AµM«á¸òµÛ´N§ä¨ì¦r¡]©Îµü·J¡^ªº¸ÑÄÀ¡C

­n²£¥Í¤@­Ó¦r¨åª«¥ó¡A¥²¶·¥ý¨Ï¥Î new ActiveXObject("Scripting.Dictionary") ²£¥Í¤@­ÓªÅªº¦r¨åª«¥ó¡AµM«á¦A¨Ï¥Î Add() ¤èªk¨Ó±N¹ïÀ³Ãö«Y¤@­Ó¤@­Ó¥[¶i¥h¡A¨Ò¦p¡G

Example¡]dict01.htm¡^¡G

¦¹½d¨Ò­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]dict01.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¦r¨åª«¥óªº«Øºc¤èªk</h2>
<hr>

<script>
capitalOf = new ActiveXObject("Scripting.Dictionary");	// «Øºc¤@­ÓªÅªº¦r¨åª«¥ó
capitalOf.Add("Taiwan", "Taipei");		// ¥[¤J²Ä 1 ­Ó¹ïÀ³Ãö«Y
capitalOf.Add("USA", "Washington");		// ¥[¤J²Ä 2 ­Ó¹ïÀ³Ãö«Y
capitalOf.Add("Korea", "Seoul");		// ¥[¤J²Ä 3 ­Ó¹ïÀ³Ãö«Y
document.writeln("capitalOf(\"Taiwan\") = " + capitalOf("Taiwan") + "<br>");
document.writeln("capitalOf(\"USA\") = " + capitalOf("USA") + "<br>");
document.writeln("capitalOf(\"Korea\") = " + capitalOf("Korea") + "<br>");
</script>

<hr>
</body>
</html>

¦b¤W­z½d¨Ò¤¤¡A¨C­Ó¦r¨åª«¥óªº¯Á¤Þ¬O¤@­Ó¦r¦ê¡A¨Ò¦p "Taiwan" ´N¹ïÀ³¨ì "Taipei"¡A¦]¦¹ capitalOf("Taiwan") ªº­È´N¬O "Taipei"¡C½Ðª`·N¬O capitalOf("Taiwan") ¬O¥Î¤p¬A©·¡A¤£¬O¥Î¤¤¬A©·¡]¤¤¬A©·¬O¥Î¦b°}¦Cª«¥ó¡^¡C

Hint
¦r¨åª«¥ó¤SºÙ¬°ÃöÁp°}¦C¡]Associative Arrays¡^¡A¥Nªí¨â­Ó¦r¦ê¤§¶¡ªºÃöÁpÃö«Y¡A³o©M Perl ªº Hash ¸ê®Æµ²ºc¬O¤@¼Ëªº¡C

¦b¥H¤Uªº½d¨Ò¤¤¡A§Ú­Ì·|¤ÏÂЪºÀˬd¦r¨åª«¥óªº¦U­Ó¹ïÀ³Ãö«Y¡A©Ò¥H§Ú­Ì¥ý©w¸q¤@­Ó¦L¥X¦r¨åª«¥óªº¨ç¼Æ¡A¦p¤U¡G

­ì©lÀÉ¡]listDict.js¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
// ¦C¦L¦r¨åÅܼÆ
function listDict(dict, dictName){
	allKeys = (new VBArray(dict.Keys())).toArray();   // ¨ú¥XÁä­È
	for (var i=0; i<dict.Count; i++)
		document.writeln(dictName+"(\"<font color=blue>"+allKeys[i]+"</font>\") = <font color=red>"+dict(allKeys[i])+"</font><br>");
}

¨ä¤¤ dict.Count ¥Nªí¦¹¦r¨åª«¥óªº¶µ¥Ø­Ó¼Æ¡A¦Ó dict.Keys() ±N·|¦b¤U¤å»¡©ú¡C®Ú¾Ú³o­Ó¨ç¼Æ¡A§Ú­Ì´N¥i¥H«Ü¤è«K¦a¦L¥X¤@­Ó¦r¨åª«¥óªº¹ïÀ³Ãö«Y¡C

»P¦r¨åª«¥ó¬ÛÃöªº¤èªkÁÙ¦³ Remove()¡]§R°£Áä­È¡A¦P®É¤]§R°£¹ïÀ³ªº¦r¦ê¡^¡BKey()¡]§ïÅÜÁä­È¡^©M Item()¡]§ïÅܹïÀ³­È¡^¡A½Ð¨£¤U¦C½d¨Ò¡G

Example¡]dict02.htm¡^¡G

¦¹½d¨Ò­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]dict02.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¦r¨åª«¥óªº Remove()¡BKey() ©M Item() ¤èªk</h2>
<hr>

<script src=listDict.js></script>
<script>
countryOf = new ActiveXObject("Scripting.Dictionary");	// «Øºc¤@­ÓªÅªº¦r¨åª«¥ó
countryOf.Add("Taipei", "Taiwan");	// ¥[¤J²Ä 1 ­Ó¹ïÀ³Ãö«Y
countryOf.Add("San Francisco", "USA");	// ¥[¤J²Ä 2 ­Ó¹ïÀ³Ãö«Y
countryOf.Add("Tokyo", "Japan");	// ¥[¤J²Ä 3 ­Ó¹ïÀ³Ãö«Y
countryOf.Add("Seoul", "Korea");	// ¥[¤J²Ä 4 ­Ó¹ïÀ³Ãö«Y
countryOf.Remove("Tokyo");		// ²¾°£ Tokyo Áä­È¡]¤Î¹ïÀ³ªº¦r¦ê¡^
countryOf.Key("Taipei") = "Hsinchu";	// ±N Taipei Áä­È§ï¦¨ Hsinchu
countryOf.Item("Tokyo") = "Nippon";	// ±N Tokyo ©Ò¹ïÀ³ªº¦r¦ê§ï¦¨ Nippon
listDict(countryOf, "countryOf");
</script>

<hr>
</body>
</html>

§Ú­Ì¤]¥i¥H¨Ï¥Î Keys() ©M Items() ¨Ó¨ú¥X¤@­Ó¦r¨åª«¥óªºÁä­È©M¹ïÀ³­È¡A¨Ò¦p¡G

Example¡]dict03.htm¡^¡G

¦¹½d¨Ò­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]dict03.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¨Ï¥Î Keys() ©M Items() ¨ú¥X¦r¨åª«¥óªºÁä­È©M¹ïÀ³­È</h2>
<hr>

<script>
capitalOf = new ActiveXObject("Scripting.Dictionary");	// «Øºc¤@­ÓªÅªº¦r¨åª«¥ó
capitalOf.Add("Taiwan", "Taipei");		// ¥[¤J²Ä 1 ­Ó¹ïÀ³Ãö«Y
capitalOf.Add("USA", "Washington");		// ¥[¤J²Ä 2 ­Ó¹ïÀ³Ãö«Y
capitalOf.Add("Korea", "Seoul");		// ¥[¤J²Ä 3 ­Ó¹ïÀ³Ãö«Y

document.writeln("<p>¨Ï¥Î Keys() ¨ú¥XÁä­È¡G<br>");
allKeys = (new VBArray(capitalOf.Keys())).toArray();   // ¨ú¥XÁä­È
for (i=0; i<capitalOf.Count; i++)
	document.writeln(allKeys[i]+"<br>");
	
document.writeln("<p>¨Ï¥Î Items() ¨ú¥X¹ïÀ³­È¡G<br>");	
allItems = (new VBArray(capitalOf.Items())).toArray();   // ¨ú¥X¹ïÀ³­È
for (i=0; i<capitalOf.Count; i++)
	document.writeln(allItems[i]+"<br>");
</script>

<hr>
</body>
</html>

¦b¤W­z½d¨Ò¤¤¡A¥Ñ Keys() ©Î Items() ©Ò¶Ç¦^ªºª«¥ó¨Ã¤£¯àª½±µ¨Ï¥Î¡A¥²¶·Âন VBArray ¤§«á¡A¦A¥Î toArray() Âন JavaScript ªº°}¦C¡A³oºØ©äÅs©Ù¨¤ªº§@ªk¡Aµ§ªÌ²q´ú¬O¦]¬°¦r¨åª«¥ó¥»¨Ó´N¬O VBScript ªº¤º«Øª«¥ó¡A¦b JavaScript¡]ÄY®æ¦a»¡¡AÀ³¸Ó¬O·L³nªºJScript¡^¤Ï¦Ó¬O·s¶i¤~¥[¤Jªºª«¥ó¡A¦]¦Ó«Ü¦h¤ä´©³£ÁÙÅ¢¸n¦b VBScript ªº³±¼v¤U¡A©Ò¥H¤]¥u¦n±N´N¤@¤U¡C

±`¥Î¨ì¦r¨åª«¥óªº¤èªkÁÙ¦³ Exists()¡]´ú¸Õ¬YÁä­È¬O§_¦s¦b¡^©M RemoveAll¡]§R°£©Ò¦³ªº¶µ¥Ø¡^¡A½Ð¨£¤U¦C½d¨Ò¡G

Example¡]dict04.htm¡^¡G

¦¹½d¨Ò­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]dict04.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¨Ï¥Î Exists() ©M RemoveAll() ªº¦r¨åª«¥óªº¤èªk</h2>
<hr>

<script src=listDict.js></script>
<script>
capitalOf = new ActiveXObject("Scripting.Dictionary");	// «Øºc¤@­ÓªÅªº¦r¨åª«¥ó
capitalOf.Add("Taiwan", "Taipei");		// ¥[¤J²Ä 1 ­Ó¹ïÀ³Ãö«Y
capitalOf.Add("USA", "Washington");		// ¥[¤J²Ä 2 ­Ó¹ïÀ³Ãö«Y
capitalOf.Add("Korea", "Seoul");		// ¥[¤J²Ä 3 ­Ó¹ïÀ³Ãö«Y
listDict(capitalOf, "capitalOf");		// ¦C¦L¦r¨åª«¥ó

key="Taiwan";
if (capitalOf.Exists(key))	// ´ú¸Õ "Taiwan" ¬O§_¬O¦r¨åª«¥ó capitalOf ªºÁä­È
	document.writeln("\"" + key + "\" is a key of \"capitalOf\".<br>");
else
	document.writeln("\"" + key + "\" is NOT a key of \"capitalOf\".<br>");
key="Japan";
if (capitalOf.Exists(key))	// ´ú¸Õ "Japan" ¬O§_¬O¦r¨åª«¥ó capitalOf ªºÁä­È
	document.writeln("\"" + key + "\" is a key of \"capitalOf\".<br>");
else
	document.writeln("\"" + key + "\" is NOT a key of \"capitalOf\".<br>");
	
capitalOf.RemoveAll();			// §R°£©Ò¦³¶µ¥Ø
listDict(capitalOf, "capitalOf");	// ¦C¦L¦r¨åª«¥ó¡]À³¸Ó¦L¤£¥X¨Ó¡A¦]¬°©Ò¦³¶µ¥Ø³£³Q§R±¼¤F¡I¡^
</script>

<hr>
</body>
</html>


JavaScript µ{¦¡³]­p»PÀ³¥Î¡G¥Î©óºô­¶¥Î¤áºÝ