/*
=====================================================================
@license MIT
@author Daniel Kwiecinski <daniel.kwiecinski@lambder.com>
@copyright 2009 Daniel Kwiecinski.
@end
=====================================================================
*/
var HashMap = function() {
this.initialize();
}
HashMap.prototype = {
hashkey_prefix: "<#HashMapHashkeyPerfix>",
hashcode_field: "<#HashMapHashkeyPerfix>",
initialize: function() {
this.backing_hash = {};
this.code = 0;
},
/*
maps value to key returning previous assocciation
*/
put: function(key, value) {
var prev;
if (key && value) {
var hashCode = key[this.hashcode_field];
if (hashCode) {
prev = this.backing_hash[hashCode];
} else {
this.code += 1;
hashCode = this.hashkey_prefix + this.code;
key[this.hashcode_field] = hashCode;
}
this.backing_hash[hashCode] = value;
}
return prev;
},
/*
returns value associated with given key
*/
get: function(key) {
var value;
if (key) {
var hashCode = key[this.hashcode_field];
if (hashCode) {
value = this.backing_hash[hashCode];
}
}
return value;
},
/*
deletes association by given key.
Returns true if the assocciation existed, false otherwise
*/
del: function(key) {
var success = false;
if (key) {
var hashCode = key[this.hashcode_field];
if (hashCode) {
var prev = this.backing_hash[hashCode];
this.backing_hash[hashCode] = undefined;
if(prev !== undefined)
success = true;
}
}
return success;
}
}
//// Usage
// creation
var my_map = new HashMap();
// insertion
var a_key = {};
var a_value = {struct: "structA"};
var b_key = {};
var b_value = {struct: "structB"};
var c_key = {};
var c_value = {struct: "structC"};
my_map.put(a_key, a_value);
my_map.put(b_key, b_value);
my_map.put("1","one");
my_map.put("1","one");
var prev_b = my_map.put(b_key, c_value);
// retrieval
if(my_map.get(a_key) !== a_value){
throw("fail1")
}
if(my_map.get(b_key) !== c_value){
throw("fail2")
}
if(prev_b !== b_value){
throw("fail3")
}
// deletion
var a_existed = my_map.del(a_key);
var c_existed = my_map.del(c_key);
var a2_existed = my_map.del(a_key);
if(a_existed !== true){
throw("fail4")
}
if(c_existed !== false){
throw("fail5")
}
if(a2_existed !== false){
throw("fail6")
}
分享到:
相关推荐
Javascript实现和操作HashMap,压缩包里面有hashmap定义和操作的例子
NULL 博文链接:https://mox-sir.iteye.com/blog/2124644
用js代码实现java中hashmap 的所有功能
一个用于js里面 用javascript实现的HashMap类
主要介绍了javascript实现的HashMap类代码,实现了添加、获取、删除、查询key和value功能,需要的朋友可以参考下
javascript实现自定义事件,纯javascript不含vbscript。 通过自定义的HashMap.js和EventManager.js实现自定义事件的监听addEvent和发布fireEvent
backbee / js-hashmap JavaScript哈希图实现##安装:bower install bb-js-hashmap --save ##特性: HashMap . length 返回HashMap对象中键/值对的数量。 HashMap . size 返回HashMap对象中键/值对的数量。 ## ...
javascript collections (HashMap, Set, ArrayList, etc.)
实现类似于Java中的HashMap功能,作为一个脚本中的Collection使用,可自行扩展功能。
JavaScript中的Object是一组数据的key-value的集合, 有点类似于Java中的HashMap, 所有这些数据都是Object里的property. 通常情况下, JavaScript中建立一个对象用"new"加上constructor function来实现. 如new Date(),...
JavaScript 中的 HashMap 实现。 就像在 Java 中一样,但不是。 用法 var capacity = 16 , loadFactor = 0.75 , // default value hashMap = new HashMap ( capacity , loadFactor ) ; hashMap . put ( "someKey...
空间哈希图javascript中的空间哈希图实现中的问题和错误,请。 非常欢迎拉取请求! 注意:这些文档已过时。 我添加了很多方法并更改了很多,但我没有时间更新文档。 很抱歉:(。但是,我可能会在接下来的几天内更新...
JavaScript中的Object是一组数据的key-value的集合, 有点类似于Java中的HashMap, 所有这些数据都是Object里的property. 通常情况下, JavaScript中建立一个对象用"new"加上constructor function来实现. 如new Date(),...
Hash Map通常在JavaScript中...Hash Map的简单实现: var hashMap = { Set : function(key,value){this[key] = value}, Get : function(key){return this[key]}, Contains : function(key){return this.Get(key
javascript帮助类 可以实现创建ArrayList,HashMap集合 各种表单验证方式都封装在里面咯 包括邮箱,时间,url,double,未定义,function,中文,英文,邮政编码 ,电话,移动电话,zip格式,是否空
Javascript数据结构,用于存储原始和复杂的Javascript对象。 每个库文件都是数据结构的实现。 浏览器和Node.js支持 它支持以下浏览器: Chrome19+ Firefox 4+ Safari 5+ IE9 + 这些Node.js版本也可以使用: ...
前几天项目上想用map集合一样的东西,简单拿对象拼了一下子,今天闲的慌实现一下 大家不要见笑 代码 var Map = function (){ /************基础变量**************/ var hashmap = {}; var keys = []; var vals...
它们都是像一样的简化实现 它使用改进的算法生成哈希。 这样可确保在所有铲斗上尽可能广泛地散布。 根据规范,基本Hashmap不能保证在迭代时满足插入顺序。 如果要在迭代时保证插入顺序,请使用LinkedHashMap 。 ...
今天在网上看到这篇文章,感觉很少会用到,但毕竟还是有些人需要这样的功能的,否则就不会有这... 实现一个模拟的简单 HashMap 存储子窗口的 window 对象。 3. 每次 open 的时候,检索此 HashMap,确定子窗口
JavaScript中的Object是一组数据的key-value的集合, 有点类似于Java中的HashMap, 所有这些数据都是Object里的property. 通常情况下, JavaScript中建立一个对象用”new”加上constructor function来实现. 如new Date...