用JavaScript实现一个哈西表(HashTable)问题求救..... var a=new Array()a["用户名"]="值" 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.cnblogs.com/ttyp/archive/2005/07/30/203824.aspx#583745 [定义]:var HMap = function(_id){ this._id = _id; this._map = {}; this.setObj = function(_key,_value){ this._map["_valueOf_"+_key] = _value; } this.getObj = function(_key){ return this._map["_valueOf_"+_key]; }}[调用]:[创建hmap对象] var map1 = new HMap("hm1");[添加值]map1.setObj("key1","value1");map1.setObj("key2","value2");[获取值]var _value1 = map1.getObj("key1");ps:1、没时间测,可能有笔误2、这种定义 HMap 对象的方法虽然直观,但效率不是最高的,如果需要创建很多 实例(〉1000个)不是很推荐3、hbhbhbhbhb1021(天外水火(我要多努力)) 的方法是对的 4、这种其他语言的 HashTable实现 在 js中是对象的基本特性,应该是由js 的动态特性决定的5、js 中 obj["prop"] = obj.prop;6、this._map["_valueOf_"+_key] 中的 前缀 "_valueOf_" 是为了避免特殊情况下,_key 为数值,obj["1"] 这是不允许的;7、js 基于对象但是不面向对象,所有所谓的“面向对象特性”都是模拟出来的,集合了最优秀程序员的智慧和他们最曲折离奇的实现 <form name=myform><input type=text name="txt1" id="d1"><input type=text name = "txt2" id="d2"></form><input type=button value="submit" onclick="addNameToHash()"><script language=javascript>var HashTable = [];//添加新元素HashTable.add = function(key,value){ this[key] = value;}//由key都到valueHashTable.getValue = function(key){ return this[key];}//将form里所有控件的name和id都存进HashTale中,name对应于HashTable的key,id对应于valuefunction addNameToHash(){ var controls = myform.elements; var len = controls.length; for(var i=0;i<len;i++) { if(controls[i].name!="") { HashTable.add(controls[i].name,controls[i].id); } } alert(HashTable.getValue("txt2")) }</script> ps: 和 cutBug 商榷var HashTable = [];为什么不定义成var HashTable = {};呢?两种应该都可以用我习惯是用下面那种有什么玄机吗?请教一下 网页播放器 一段脚本 请一个这样的网页特效如何实现?很实用很少见的。 问个经验性的问题,表单验证的 javascript经典代码解释 求助:关于cookie 与 iframe 的问题 请问JS中有struct结构吗?有的话怎么用? 请问:我想在当用户点击提交按钮后,在弹出提示框中显示当前表单中用户随意输入的数值。 ▲△▲△-- 挑战性问题,高手请进:如何动态写模态对话框(ModalDialog)的HTML代码 请问COOKIES的大小是否有限制?是多少? 这段代码是js的,我想问,为什么我最后那句输出lineCount 有问题 关于换行符的问题,怎么不能显示换行?高手来帮忙!!!
[定义]:
var HMap = function(_id){
this._id = _id;
this._map = {};
this.setObj = function(_key,_value){
this._map["_valueOf_"+_key] = _value;
}
this.getObj = function(_key){
return this._map["_valueOf_"+_key];
}
}[调用]:[创建hmap对象] var map1 = new HMap("hm1");
[添加值]
map1.setObj("key1","value1");
map1.setObj("key2","value2");[获取值]var _value1 = map1.getObj("key1");
ps:
1、没时间测,可能有笔误
2、这种定义 HMap 对象的方法虽然直观,但效率不是最高的,如果需要创建很多 实例
(〉1000个)不是很推荐
3、hbhbhbhbhb1021(天外水火(我要多努力)) 的方法是对的
5、js 中 obj["prop"] = obj.prop;
6、this._map["_valueOf_"+_key] 中的 前缀 "_valueOf_" 是为了避免特殊情况下,_key 为数值,obj["1"] 这是不允许的;
7、js 基于对象但是不面向对象,所有所谓的“面向对象特性”都是模拟出来的,集合了最优秀程序员的智慧和他们最曲折离奇的实现
<input type=text name="txt1" id="d1">
<input type=text name = "txt2" id="d2">
</form>
<input type=button value="submit" onclick="addNameToHash()">
<script language=javascript>var HashTable = [];//添加新元素
HashTable.add = function(key,value)
{
this[key] = value;
}
//由key都到value
HashTable.getValue = function(key)
{ return this[key];
}//将form里所有控件的name和id都存进HashTale中,name对应于HashTable的key,id对应于value
function addNameToHash()
{
var controls = myform.elements;
var len = controls.length;
for(var i=0;i<len;i++)
{
if(controls[i].name!="")
{
HashTable.add(controls[i].name,controls[i].id);
}
}
alert(HashTable.getValue("txt2"))
}</script>
ps: 和 cutBug 商榷var HashTable = [];
为什么不定义成
var HashTable = {};呢?两种应该都可以用
我习惯是用下面那种
有什么玄机吗?
请教一下