scripting.dictionary 是否有键是哪个插件

VBS使用Scripting.Dictionary字典对象
标签:&,&,&,&
Scripting.Dictionary是个很有用的组件,其创建了类似于Key索引对应Value值的字典对象,并且在其内部提供了快速索引访问的机制,可以让我们通过Key直接索引到指定的Value,比遍历二维数组有效得多。
其在VBScript中是这样访问的。
Dim objDict
Set objDict = WSH.CreateObject("Scripting.Dictionary")
' .Add(key, value)
objDict.Add "a", "value1"
objDict.Add "b", "value2"
objDict.Add "c", "value3"
'直接通过key=b索引到value2
WSH.Echo(objDict.Item("b"))
objDict.Remove("b") ' 删除索引b及其对应的值
' 以下是遍历字典
Dim objKeys, objItems, i
objKeys = objDict.Keys
objItems = objDict.Items
For i = 0 To objDict.Count - 1
WSH.Echo("Key=" & objKeys(i) & _
" AND Value=" & objItems(i));
' 判断指定的key是否存在
If objDict.Exists("b") Then
WSH.Echo("Found it")
WSH.Echo("Not Exists!")
objDict.RemoveAll
' 清空字典内所有的key及其对应value
Set objDict = Nothing
原文链接:
阅读(...) 评论()查看: 5579|回复: 4
引用字典与Scripting.Dictionary区别?
阅读权限50
在线时间 小时
Set oDic = CreateObject(&Scripting.Dictionary&)
0.jpg (24.32 KB, 下载次数: 0)
10:35 上传
Set d = CreateObject(&Scripting.Dictionary&)
d(&a&) = 11
d(&b&) = 22
d(&c&) = 33
MsgBox d.Keys(0) → 运行错误见上图
01.jpg (49.92 KB, 下载次数: 1)
10:35 上传
Dim d As New Dictionary
d(&a&) = 11
d(&b&) = 22
d(&c&) = 33
MsgBox d.Keys(0)
MsgBox d.Items(1)
运行无错误
阅读权限100
在线时间 小时
用了Set oDic = CreateObject(&Scripting.Dictionary&)
则不能用d.Keys(0)
可这样用:
Msgbox k(0)
阅读权限50
在线时间 小时
蓝桥玄霜 发表于
用了Set oDic = CreateObject(&Scripting.Dictionary&)
则不能用d.Keys(0)
可这样用:
用Scripting.Dictionary→转换为数组→Arr(0)
dim D as New Dictionary→不用转换数组→D.Keys(0)→成立。
阅读权限10
在线时间 小时
学习了,但是还没明白
阅读权限95
在线时间 小时
& & & & & & & &
论坛上有介绍,d.Keys写全应该是d.Keys()
Set d = CreateObject(&Scripting.Dictionary&)
d(&a&) = 11
d(&b&) = 22
d(&c&) = 33
MsgBox d.Keys()(0)
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师&&&&&&&&&&&
function ok(){
var obj = new ActiveXObject("Scripting.Dictionary");//创建对象
obj.Add("hello",null);//增加新项
obj.Item("hello")="Chiweiyao";//给新增添的项赋值
obj.Add("world",null);
obj.Item("world")="Greate";
//获取值   alert(
obj.item("world"));
var keys=obj.Keys().toArray();//将obj对象的键值转换成数组
for(var i = 0;i&keys.i++){
if(obj.Exists(keys[i])){//判断对象集合中是否存在指定键值的项
obj.Item(keys[i])=null;
obj.Remove(keys[i]);//删除指定键值项
alert(e.message);
把学习一种技术一直坚持下去。
Dictionary 对象
存储数据键和项目对的对象。
y = new ActiveXObject("Scripting.Dictionary")
Dictionary&对象等价于 PERL 联合数组。项目可以是数据的任何形式,并存储在数组中。每个项目都与一个具有唯一性的键相联。该键用于取得单个项目,并且通常是整数或字符串,但也可以是除数组以外的任何类型。
Java代码&&
var&dic&=&new&ActiveXObject("Scripting.Dictionary");&&
dic.add&("a",&"aaaaaa");&&
Java代码&&
if&(dic.Exists("a"))&&
&&&&alert("true");&&
&&&&alert("false");&&
Java代码&&
alert(dic.Item("a"));&&
Java代码&&
dic.Item("a")&=&"dddddd";&&
alert(dic.Item("a"));&&
Java代码&&
dic.Key("a")&=&"d";&&
alert(dic.Item("d"));&&
Java代码&&
dic.Remove("a");&&
删除所有的值
Java代码&&
dic.RemoveAll();&&
根据条目遍历对象的值内容
Java代码&&
var&arr&=&(new&VBArray(dic.Items())).toArray();&&&&&
var&str&=&"";&&
for&(var&i&in&arr)&{&&&
&&&&str&+=&arr[i]&+&"-";&&
alert(str);&&
遍历对象的Key,然后获得内容条目
Java代码&&
arr&=&(new&VBArray(dic.Keys())).toArray();&&&&
str&=&"";&&
for&(var&i&in&arr)&{&&&
&&&&str&+=&arr[i]&+&"-"&+&dic(arr[i])&+&"&|&";&&
alert(str);&&
获得对象的条目数
Java代码&&
var&a&=&(new&VBArray(dic.Keys()));&&&&&&
var&s&=&"";&&
for&(i&=&0;&i&&&dic.C&i++)&{&&&
&&&&s&+=&a.getItem(i)&+&"-"&+&dic(a.getItem(i))&+&"&|&";&&
alert(s);&&
想Map一样,Key和Value,使用JS内部的对象
以上是在火狐上运行的结果,也就是说这个对象是IE的对象,不属于标准之中,所以使用时注意点吧!
阅读(...) 评论()Scripting.Dictionary详解
  许多Microsoft的编程语言,如Visual
Basic、VBScript和Jscript,都提供集合(collection)。可以把集合想象为数组,可以使用其中内建的函数完成存储和操纵数据等基本任务。无须担心数据是在哪些行列,而是使用唯一的键进行访问。
  VBScript和Jscript都提供类似的对象,通称Scripting.Dictionary对象或Dictionary对象。它类似于二维数组,把键和相关条目的数据存放在一起。然而真正的面向对象的方法,不应直接访问数据条目,必须使用Dictionary对象支持的方法和属性来实现。
1. Dictionary对象的成员概要
  当增加一个键/条目对时,如果该键已存在;或者删除一个键/条目对时,该关键字/条目对不存在,或改变已包含数据的Dictionary对象的CompareMode,都将产生错误。
  属性说明
  CompareMode (仅用于VBScript)设定或返回键的字符串比较模式
  Count 只读。返回Dictionary里的键/条目对的数量
  Item(key) 设定或返回指定的键的条目值
  Key(key) 设定键值
  方法说明
  Add(key,item) 增加键/条目对到Dictionary
  Exists(key) 如果指定的键存在,返回True,否则返回False
  Items() 返回一个包含Dictionary对象中所有条目的数组
  Keys() 返回一个包含Dictionary对象中所有键的数组
  Remove(key) 删除一个指定的键/条目对
  RemoveAll() 删除全部键/条目对
2. 对Dictionary中增加和删除条目
  一旦得到一个新的(空的)Dictionary,可以对其添加条目,从中获取条目以及删除条目:
  ‘ In VBScript:
  objMyData.Add “MyKey”, “MyItem”
  objMyData.Add “YourKey”, ”YourItem”
  blnIsThere = objMyData.Exists(“MyKey”)
  strItem = objMyData.Item(“YourKey”)
  strItem = objMyData.Remove(“MyKey”)
  objMyData.RemoveAll
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
    StrThisKey = arrKeys(intLoop) ‘This is the key value
    StrThisItem = arrItems(intLoop) ‘This is the item (data)
  // 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.C intLoop++)
    // Iterate through the arrays
    strThisKey = arrKeys[intLoop]; // This is the key value
    strThisItem = arrItems[intLoop]; // This is the item (data)
  在VBScript里也可以使用For Each … Next语句完成同样的功能:
  ‘ Iterate the dictionary as a collection in VBScript
  For Each objItem in arrItems
    Response.Write objItem & “ = “ & arrItems(objItem)
5.3.2 Dictionary对象示例
  本书提供了一系列示例文件可用来试验脚本运行时间库的各种属性。
  本章代码的缺省页面提供了一系列可使用的VBScript示例链接。有些示例对JScript同样有效。这些示例存放在Chapter05目录下相应的子目录里
  要查看Dictionary对象的运行,在菜单页面点击第一个链接,打开名叫show_dictionary.asp的页面。这个页面显示了我们提供的Dictionary对象的内容,允许试验其属性和方法。屏幕如图5-3所示:
  1. Dictionary的global.asa文件
  随Dictionary对象示例页面提供的文件之一是global.asa。它创建并预先填充了一个会话层作用域的Dictionary对象,因此其内容在页面请求之间不会丢失。一般说来(考虑到可扩展性),这不是一个理想的做法。在这个例子里,可以看到Dictionary的属性和方法的效果。
  如果在自己的服务器上下载并安装示例,必须创建一个基于此global.asa文件的虚拟应用程序。或者将其内容添加到缺省站点的根文件夹中的global.asa文件里。在第3章讲述了如何用向导创建虚拟应用程序。然而对于本示例,创建一个虚拟应用程序最简单的方法是在Chapter05示例文件夹内右击dictionary子文件夹,在Properties对话框的Home
Directory选项卡里,点击Create按钮,如图5-4所示:
  在这个global.asa文件里,代码使用元素创建一个会话层作用域的Scripting.Dictionary对象实例。然后在Session_onStart事件处理程序里将一系列值用Add方法放入Dictionary中,并将对Dictionary对象的引用指定给ASP会话变量MyDictionary:
  Sub Session_onStart()
    objBookList.Add "2610", "Professional Active Server Pages
    objBookList.Add "1274", "Instant JavaScript"
    objBookList.Add "2882", "Beginning ASP Components"
    objBookList.Add "1797", "Professional ASP Techniques"
    objBookList.Add "1835", "AD0 2.0 Programmer's Reference"
    Set Session("MyDictionary") = objBookList
  End Sub
2. Dictionary示例页面
  在“Scripting.Dictionary
Object”主页面里,首要的任务是得到一个会话层作用域的Dictionary对象实例的引用。注意,这个引用是一个对象变量,因此必须在VBScript里使用Set关键字。
  然后,检查一下是否得到了一个对象(这是个好习惯),如果没有正确地建立包含global.asa文件的虚拟应用程序,检查一下问题出在哪里。你将看到我们自己的消息代替了ASP的错误消息(但是注意,对于这一操作必须关闭缺省的错误处理)。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。2001年6月 VB大版内专家分月排行榜第一2001年1月 VB大版内专家分月排行榜第一
2001年5月 VB大版内专家分月排行榜第二2001年4月 VB大版内专家分月排行榜第二2001年3月 VB大版内专家分月排行榜第二2000年12月 VB大版内专家分月排行榜第二2000年11月 VB大版内专家分月排行榜第二
2001年6月 VB大版内专家分月排行榜第一2001年1月 VB大版内专家分月排行榜第一
2001年5月 VB大版内专家分月排行榜第二2001年4月 VB大版内专家分月排行榜第二2001年3月 VB大版内专家分月排行榜第二2000年12月 VB大版内专家分月排行榜第二2000年11月 VB大版内专家分月排行榜第二
2001年6月 VB大版内专家分月排行榜第一2001年1月 VB大版内专家分月排行榜第一
2001年5月 VB大版内专家分月排行榜第二2001年4月 VB大版内专家分月排行榜第二2001年3月 VB大版内专家分月排行榜第二2000年12月 VB大版内专家分月排行榜第二2000年11月 VB大版内专家分月排行榜第二
2001年6月 VB大版内专家分月排行榜第一2001年1月 VB大版内专家分月排行榜第一
2001年5月 VB大版内专家分月排行榜第二2001年4月 VB大版内专家分月排行榜第二2001年3月 VB大版内专家分月排行榜第二2000年12月 VB大版内专家分月排行榜第二2000年11月 VB大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 dictionary是线程安全 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信