一直不习惯用Dictionary,但是有时候却很有用。
Dictionary 对象
Dictionary 对象用于在结对的名称/值中存储信息((等同于键和项目)。Dictionary 对象看似比数组更为简单,然而,Dictionary 对象却是更令人满意的处理关联数据的解决方案。
比较 Dictionary 和数组:
- 键用于识别 Dictionary 对象中的项目
- 无需调用 ReDim 来改变 Dictionary 对象的尺寸
- 当从 Dictionary 删除一个项目时,其余的项目会自动上移
- Dictionary 不是多维,而数组是
- Dictionary 与数组相比,有更多的内建对象
- Dictionary 在频繁地访问随机元素时,比数组工作得更好
- Dictionary 在根据它们的内容定位项目时,比数组工作得更好
Dictionary 对象的属性和方法描述如下:
属性
CompareMode:设置或返回用于在 Dictionary 对象中比较键的比较模式。
Count:返回 Dictionary 对象中键/项目对的数目。
Item:设置或返回 Dictionary 对象中一个项目的值。
Key:为 Dictionary 对象中已有的键值设置新的键值。
方法
Add:向 Dictionary 对象添加新的键/项目对。
Exists:返回一个逻辑值,这个值可指示指定的键是否存在于 Dictionary 对象中。
Items:返回 Dictionary 对象中所有项目的一个数组。
Keys:返回 Dictionary 对象中所有键的一个数组。
Remove:从 Dictionary 对象中删除指定的键/项目对。
RemoveAll:删除 Dictionary 对象中所有的键/项目对。
<%
Dim oDic,aItems,aKeys
Set oDic = Server.CreateObject("Scripting.Dictionary") '添加
oDic.Add "aaa",111
oDic.Add "bbb",222
oDic.Add "ccc",333
oDic.Add "ddd",444 '修改
If oDic.Exists("aaa") Then
oDic.key("aaa") = "eee" 'key属性,只读
oDic.item("eee") = 555 'item属性,可读写
End If '列表
aKeys = oDic.Keys
aItems = oDic.Items
For i=0 To oDic.Count-1
Response.Write(aKeys(i) & "," & aItems(i))
Next '删除
Response.Write(oDic.Count)
oDic.Remove("eee") '从 Dictionary 对象中删除键和项目对
Response.Write(oDic.Count)
oDic.RemoveAll() '删除 Dictionary 对象中的所有键和项目对
Response.Write(oDic.Count)
Set oDic = Nothing
%>
购物车具体用法:
1、为客户建立购物车,名为shop
set session(“shop”)= CreateObject(“Scripting.Dictionary”)
2、检查客户当前购物车商品个数
session(“shop”).count=0
如果为0,那么自然表示购物车现在是空的
3、客户订购某一商品
session(“shop”).add id,num
id表示数据库中商品的ID或编号等,num表示客户订购此商品的
个数
4、客户查看购物车列表(客户确认当前已购买了的商品列表)
id=session(“shop”).keys
num=session(“shop”).items
以上2句均返回的是数组型数据,分别付给id(商品ID组)和num(
商品数量组)这2个变量
聪明的你马上就会想到只要通过循环把它们一一对应起来就OK了:
for i=0 to session(“shop”).count-1
…id(i)
…这里可以结构操作数据库把商品的信息取出来,通过操作商品编
号数组id(i)
do while not rs.eof
…num(i)
…然后循环结果集,使价格等与商品对应,通过操作商品个数数组
num(i)
rs.movenext
loop
next
数组的下标是从0开始,所以要count-1哦
这部可能有点乱,不过如果你有点经验的话应该是很容易读懂的。
5、客户更改某一商品的订购数量
session(“shop”)(id)=num
太简单了,我不多解释了。
6、客户删除某一商品
session(“shop”).remove(id)
7、客户清空购物车
session(“shop”).removeall