`

Scripting.Dictionary对象

 
阅读更多
许多Microsoft的编程语言,如Visual Basic、VBScript和Jscript,都提供集合(collection)。可以把集合想象为数组,可以使用其中内建的函数完成存储和操纵数据等基本任务。无须担心数据是在哪些行列,而是使用唯一的键进行访问。
VBScript和Jscript都提供类似的对象,通称Scripting.Dictionary对象或Dictionary对象。它类似于二维数组,把键和相关条目的数据存放在一起。然而真正的面向对象的方法,不应直接访问数据条目,必须使用Dictionary对象支持的方法和属性来实现。
本章提供了一些示例页面,允许试验脚本运行期对象的方法和属性。这些实例在下载的文件的文件的Chaper05子目录里。

5.3.1 创建和使用Dictionary对象
创建一个Dictionary对象的示例如下:
‘In VBScript:
Dim objMyData
Set objMyData = Server.CreateObject(“Scripting.Dictionary”)

//In Jscript:
var objMyData = Server.CreateObject(‘Scripting.Dictionary’);

<!-- Server-Side with an OBJECT element -->
<OBJECT RUNAT=”SERVER” SCOPE=”PAGE” ID=”objMyData”
PROGID=”Scripting.Dictionary”>
</OBJECT>
Dictionary对象还可用于客户端的IE中。
1. Dictionary对象的成员概要
表5-2和表5-3列出了Dictionary对象的属性和方法及相应的说明。
当增加一个键/条目对时,如果该键已存在;或者删除一个键/条目对时,该关键字/条目对不存在,或改变已包含数据的Dictionary对象的CompareMode,都将产生错误。
表5-2Dictionary对象的属性和说明
属 性 说 明
CompareMode (仅用于VBScript)设定或返回键的字符串比较模式
Count 只读。返回Dictionary里的键/条目对的数量
Item(key) 设定或返回指定的键的条目值
Key(key) 设定键值
表5-3Dictionary对象的方法和说明
方 法 说 明
Add(key,item) 增加键/条目对到Dictionary
Exists(key) 如果指定的键存在,返回True,否则返回False
Items() 返回一个包含Dictionary对象中所有条目的数组
Keys() 返回一个包含Dictionary对象中所有键的数组
Remove(key) 删除一个指定的键/条目对
RemoveAll() 删除全部键/条目对
2. 对Dictionary中增加和删除条目
一旦得到一个新的(空的)Dictionary,可以对其添加条目,从中获取条目以及删除条目:
‘ In VBScript:
objMyData.Add “MyKey”, “MyItem” ‘Add Value MyItem with key MyKey
objMyData.Add “YourKey”, ”YourItem” ‘Add value YourItem with key YourKey
blnIsThere = objMyData.Exists(“MyKey”) ‘Returns True because the item exists
strItem = objMyData.Item(“YourKey”) ‘Retrieve value of YourKey
strItem = objMyData.Remove(“MyKey”) ‘Retrieve and remove YourKey
objMyData.RemoveAll ‘Remove all the items
在JScript中,等价的代码为:
// In JScript;
objMyData.Add (‘MyKey’, ‘MyItem’); //Add Value MyItem with key MyKey
objMyData.Add (‘YourKey’, ‘YourItem’); //Add value YourItem with key YourKey
var blnIsThere = objMyData.Exists(‘MyKey’); //Returns True because the item exists
var strItem = objMyData.Item(‘YourKey’); //Retrieve value of YourKey
var strItem = objMyData.Remove(‘MyKey’); //Retrieve and remove YourKey
objMyData.RemoveAll(); //Remove all the items
3. 修改键或条目的值
可以通过修改键的值,或通过修改与特定的键关联的条目的数据,来改变存储在Dictionary内的数据。下面的代码改变键为MyKey的条目中的数据。
ObjMyData.Item(“MyKey”) = “NewValue” ‘ In VBScript
ObjMyData.Item(‘MyKey’) = ‘NewValue’; // In JScript
如果指定的键在Dictionary未找到,将在Dictionary中创建一个以MyKey为键,以New Value为其条目值的新的键/条目对。有意思的是,如果使用一个不存在的键来检索条目,不仅得到一个空的字符串(这是可以想到的),而且还在Dictionary里添加一个新的键/条目对,键即是指定的键,但条目的数据为空。
可以使用Key属性仅改变键的值而不改变与之对应的条目的数据。将一个已存在的键MyKey改变为MyNewKey,可以用:
objMyData.Key(“MyKey”) = “MyNewValue” ‘ In VBScript
objMyData.Item(‘MyKey’) = ‘MyNewValue’; // In JScript
如果指定的键未找到,则产生运行期错误。
4. 设置比较模式
Dictionary的CompareMode属性仅适用于VBScript,不能在JScript中使用。当比较字符串键时,允许指定比较的方式。两个允许的值为BinaryCompare(0)和TextCompare(1)。BinaryCompare(0)为二进制数对照(即区分大小写);TextCompare(1)为文本对照(即不区分大小写)。
5. 遍历Dictionary
研究Dictionary时,有两个方法和一个属性需要特别注意,它们允许我们遍历存储在Dictionary里的所有键/条目对。Items方法用一个一维数组的形式返回Dictionary里所有的条目数据,而keys方法用一个一维数组返回所有已存在的键值。可以使用Count属性得到键或条目的数量。
例如,可以使用下列代码得到名称为objMyData的Dictionary中所有的键和条目值。注意,虽然Count属性保存了在Dictionary里的键/条目数量,但VBScript和JScript的数组总是从下标0开始的。因此,数组下标应从0到Count-1。
‘In VBScript:
arrKeys = objMyData.Keys ‘Get all the keys into an array
arrItems = objMyData.Items ‘Get all the items into an array

For intLoop = 0 To objMyData.Count –1 ‘Iterate through the array
StrThisKey = arrKeys(intLoop) ‘This is the key value
StrThisItem = arrItems(intLoop) ‘This is the item (data) value
Next

// In JScript
// Get VB-style arrays using the Keys() and Items() methods
var arrKeys = new VBArray(objMyData.Keys()).toArray();
var arrItems = new VBArray(objMyData.Items()).toArray();

for (intLoop = 0; intLoop < objMyData.Count; intLoop++) {
// Iterate through the arrays
strThisKey = arrKeys[intLoop]; // This is the key value
strThisItem = arrItems[intLoop]; // This is the item (data) value
}
在VBScript里也可以使用For Each … Next语句完成同样的功能:
‘ Iterate the dictionary as a collection in VBScript
For Each objItem in arrItems
Response.Write objItem & “ = “ & arrItems(objItem) & “<BR>”
Next
分享到:
评论

相关推荐

    ActiveX 部件不能创建对象 Scripting.Dictionary解决办法

    ActiveX 部件不能创建对象 Scripting.Dictionary解决办法

    asp中Scripting.Dictionary字典对象使用示例

    vbscript的Scripting.Dictionary创建了类似于Key索引对应Value值的字典对象,通过Key直接索引到指定的Value。 VBScript中Scripting.Dictionary使用示例如下: 代码如下: Dim objDict Set objDict = WSH.CreateObject...

    字典基础(你可能不会字典!)

    '字典(Dictionary):是微软Windows脚本语言中的一个很有用的对象。 '语法结构也与传统字典的结构差不多 '2.字典特点 'KEY的唯一性 'KEY与Item的相互对应着关系 '3.字典有什么用 '字典+数组=更强大 '4.字典...

    asp dictionary对象的用法

    现在我们要考虑的是dictionary对象在单页的时候,有哪些设计时的缺陷: 大家可以这么试试 set rs=server.createobject(“adodb.recordset”) sql=”select * from table” rs.open sql,conn,1,3 set ttt=server....

    dictionary:包含我们在 Grace 中对 Dictionary 对象的实现以及一套测试

    字典包含我们在 Grace 中对 Dictionary 对象的实现以及一组测试。

    字典语法基础

    '对象.新增 Key,Item '注意:在本地窗口中可能看不到Item条件。 'Keys方法 '返回一个数组,其中包含了一个 Dictionary 对象中的全部现有的关键字。 i = d.Keys(1) '前期绑定写法 '方法1 j = Application.Index(d...

    ASP3《高级编程》(第一部分)

    5.3 Scripting.Dictionary对象 141 5.3.1 创建和使用Dictionary对象 141 5.3.2 Dictionary对象示例 143 5.4 Scripting.FileSystemObject对象 148 5.4.1 FileSystemObject对象成员概要 149 5.4.2 使用驱动器 151...

    ASP3《高级编程》(第二部分)

    5.3 Scripting.Dictionary对象 141 5.3.1 创建和使用Dictionary对象 141 5.3.2 Dictionary对象示例 143 5.4 Scripting.FileSystemObject对象 148 5.4.1 FileSystemObject对象成员概要 149 5.4.2 使用驱动器 151...

    易语言高性能哈希表模块和例程

    最近做项目需要用到哈希表,由于...像“闪电哈希”,“scripting.Dictionary”对象 伪哈希 。不是速度太慢 就是功能不全 。本哈希类为模仿java中 jdk哈希表。只是处理冲突键时,一直使用的线性表。@5182235367。

    ASP 常见对象总结(熟悉一下利用以后的开发使用)

    Connection Command Recordset Record Stream ASP支持的对象很多,可以自己编写COM组件,下面是我们经常使用的: Server.CreateObject(“scripting.filesystemobject”) Server.CreateObject(“scripting.dictionary...

    易语言-易语言高性能哈希表模块和例程

    最近做项目需要用到哈希表,由于易语言没有原生的哈希表 ...像“闪电哈希”,“scripting.Dictionary”对象 伪哈希 不是速度太慢 就是功能不全 本哈希类为模仿java中 jdk哈希表 只是处理冲突键时,一直使用的线性表

    易语言-易语言高性能哈希表(容量自动调整,让效率得到保证)

    最近做项目需要用到哈希表,由于易语言没有原生的哈希表 ...像“闪电哈希”,“scripting.Dictionary”对象 伪哈希 不是速度太慢 就是功能不全 本哈希类为模仿java中 jdk哈希表 只是处理冲突键时,一直使用的线性表

    无组件ASP文件上传源代码

    set File=CreateObject("Scripting.Dictionary") set upfile_5xSoft_Stream=CreateObject("Adodb.Stream") upfile_5xSoft_Stream.mode=3 upfile_5xSoft_Stream.type=1 upfile_5xSoft_Stream.open upfile_5xSoft...

    Windows 脚本技术参考手册

    Windows 脚本技术参考手册(CHM) 目录: Windows 脚本技术 &lt;br&gt; Windows 脚本技术 &lt;br&gt; JScript VBScript 脚本运行时 &lt;br&gt; Dictionary 对象 FileSystemObject 对象 脚本 Encoder ...

    Microsoft Windows 脚本技术.pdf

    Dictionary 对象相当于 PERL 的关联数组。项可以是任意形式的数据,存储在数组中。每一个项与唯一的关键字相关联。关键字用于检索个别项, 通常是一个整数或字符串,它可以是数组以外的任何内容。 FileSystemObject ...

    烟雨个人博文系统 Build 1.0.2

    5、服务器必须支持Scripting.Dictionary及Adodb.Stream组件,不然本系统将无法使用。FSO读写组件(非必须,在配置系统属性时用到) 6、如需用mssql作为数据库,请导入sql/sql.sql(只带后台账号)到数据库中,修改...

    烟雨个人博文系统 v2.0.1

    其他网站配置,请进入后台(admin)管理设置4、后台默认管理账号密码:adminadmin5、服务器必须支持Scripting.Dictionary及Adodb.Stream组件,不然本系统将无法使用。FSO读写组件(非必须,在配置系统属性时用到)6...

Global site tag (gtag.js) - Google Analytics