javaScript如何实现hash javaScript没有哈希表让人很郁闷,我说的不是基于字符串,而是以对象为键值,象这样: { Object: value }我尝试了一下,都是不成。有没有什么办法呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以成功的但要这样var hash = {};var obj = {};hash[obj] = "a";alert(hash[obj]); javaScript的普通对象本身就可以是哈希表 楼主意思是以对象为key还是value?value的话,没问题,key的话,是不行的.对象的key只能是字符串或者数字.value可以是任意值.另外, 1L这样也是有问题的哦..事实上,你这种最终的key是obj.toString(),也就是chrome下"[object Object]",并不是真的拿对象当key.而且你在拿另外一个对象比如hash[obj2]="b". 只会修改上面的值,不会另外多一对键值. 我是挖空心思想得到Object的那个“unique adress”,可怎么也不成。toString()不行,结果都是一样"[object Object]";parseInt()也不行,返回是“NaN”;然后我想办法 Object |= interger,结果是0;......哈希表是很有用的东西,javaScript不支持实在是太遗憾了。 你可以计算object的MD5值嘛..拿这个MD5值当key 或者你这写一个类例如HashObj, 你的所有object都是这个HashObj类的实例.然后你自己实现这个类的toString方法, 自己计算一个“unique adress”.那也可以哦 楼上兄弟的方法很好,而且实现也很容易你可以自己写一个类,构造时生成一个绝不重复的key值,然后重写toString方法,直接返回这个key就行了js很灵活,同时意味着很多东西需要自己实现就像js没有继承,我们可以自己实现,没有重载,我们也可以自己模拟 javascript本身就是hash啊,你可以把对象序列化和反序列化使用,或者通过各种中间手段达到你的目的,比如数组或者json串。 7楼的方法应该是可行的,但我说的对象是html element,不知道能不能附加属性,firefox据说可以,但不是所有的浏览器都支持。对javaScript还不太熟悉,html element的属性好象和xml element不一样,不是想加就能加的。而且,加上去的属性,估计都是字符串,要是能直接将对象的引用绑定上去就好了。 能不能, 行不行, 这些自己试过不就可以了, 尽是道听途说.可以附加任何属性, 只是属性名(不是属性) 必须是字符串我试过呀,比如象这样: document.getElementById('symbol').customProperty = 'value';然后浏览器执行到那儿就挂了。或者,要这样写:document.getElementById('symbol')['customProperty '] = 'value';这个倒没有试过。 我还试过setAttribute(),也是不行。 document.getElementById('symbol')['customProperty '] = 'value';这个可行。结合7楼和12楼的方法,我这个问题算是解决了。 js如何才能实现这样的删除功能 求一个正则 ~~ javascript 验证输入合法性 一个右键菜单,有人能帮我修改成多级菜单吗? 怎么捕获Javascript中的所有事件? 怎样实现在flash里某个图片的Src指向Internet上的一幅图片?我想实现显示动态图片的功能! js中有关日起转换的函数,有无日期比较函数 td中换行问题 问大家一个问题啊,这个应该如何写? element导航菜单 openlayers一个markers层上如何添加多个标注 小菜写了一段jquery没有达到预想的结果,烦请高手帮忙
但要这样var hash = {};
var obj = {};
hash[obj] = "a";
alert(hash[obj]);
value的话,没问题,key的话,是不行的.
对象的key只能是字符串或者数字.value可以是任意值.
另外, 1L这样也是有问题的哦..
事实上,你这种最终的key是obj.toString(),也就是chrome下"[object Object]",并不是真的拿对象当key.
而且你在拿另外一个对象比如hash[obj2]="b". 只会修改上面的值,不会另外多一对键值.
parseInt()也不行,返回是“NaN”;
然后我想办法 Object |= interger,结果是0;
......哈希表是很有用的东西,javaScript不支持实在是太遗憾了。
你可以自己写一个类,构造时生成一个绝不重复的key值,然后重写toString方法,直接返回这个key就行了
js很灵活,同时意味着很多东西需要自己实现
就像js没有继承,我们可以自己实现,没有重载,我们也可以自己模拟
能不能, 行不行, 这些自己试过不就可以了, 尽是道听途说.可以附加任何属性, 只是属性名(不是属性) 必须是字符串我试过呀,比如象这样: document.getElementById('symbol').customProperty = 'value';然后浏览器执行到那儿就挂了。或者,要这样写:document.getElementById('symbol')['customProperty '] = 'value';
这个倒没有试过。