在js写一个Map
2014-09-14 23:00
253 查看
是复制
的文章,作者很厉害啊!我要多多学习,加油!!!http://www.cnblogs.com/zfc2201/archive/2012/07/16/2594389.html,原帖位置
众所周之,js是没有Map类的,要想用还得自己封装一个
(function(win) {var Map = function() {this.count = 0;this.entrySet = {};};var proto = Map.prototype;proto.size = function() {return this.count;};proto.isEmpty = function() {return this.count === 0;};proto.containsKey = function(key) {if (this.isEmpty()) {return false;}for ( var prop in this.entrySet) {if (prop === key) {return true;}}return false;};proto.containsValue = function(value) {if (this.isEmpty()) {return false;}for ( var key in this.entrySet) {if (this.entrySet[key] === value) {return true;}}return false;};proto.get = function(key) {if (this.isEmpty()) {return null;}if (this.containsKey(key)) {return this.entrySet[key];}return null;};proto.put = function(key, value) {this.entrySet[key] = value;this.count++;};proto.remove = function(key) {if (this.containsKey(key)) {delete this.entrySet[key];this.count--;}};proto.putAll = function(map) { if(!map instanceof Map){ return; }for ( var key in map.entrySet) {this.put(key, map.entrySet[key]);}};proto.clear = function() {for ( var key in this.entrySet) {this.remove(key);}};proto.values = function() {var result = [];for ( var key in this.entrySet) {result.push(this.entrySet[key]);}return result;};proto.keySet = function() {var result = [];for ( var key in this.entrySet) {result.push(key);}return result;};proto.toString = function() {var result = [];for ( var key in this.entrySet) {result.push(key + ":" + this.entrySet[key]);}return "{" + result.join() + "}";};proto.valueOf = function() {return this.toString();};win.Map = Map;})(window);
测试:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/javascript" src="Map.js"></script><script type="text/javascript">window.onload = function(){ var map = new Map(); map.put("name", "jack"); map.put("age", "28"); map.put("gender", "male"); println(map.get("name")); println(map.isEmpty()); println(map.get("name")); println(map.size()); println(map.keySet()); println(map.values()); println(map.count); println(map); println("-----------------------------------------"); var map2 = new Map(); map2.putAll(map); println(map2); map2.remove("gender"); println(map2); println(map2.size()); println(map2.containsKey("name")); println(map2.containsValue("jack")); map2.clear(); println(map2); println(map2.size()); println(map2.containsKey("name")); println(map2.containsValue("jack"));}</script></head><body></body></html>
结果:
jackfalsejack[name,age,gender][jack,28,male]{name:jack,age:28,gender:male}-----------------------------------------{name:jack,age:28,gender:male}{name:jack,age:28}truetrue{}falsefalse
相关文章推荐
- heatmap.js 一个用canvas画热力图的利器
- 如何在 javascript / js 中 建立一个map
- JS/Jquery 中怎么定义存储一个类似map中key-value形式的变量,并且怎样动态赋值key和value?
- js创建一个MAP对象并存取值
- js创建一个MAP对象并存取值
- MapEasy-一个类似GoogleMap的客户端JS开源库
- js创建一个MAP对象并存取值
- JS的forEach和map方法的区别,还有一个$.each
- JS学习笔记1——不要使用JavaScript内置的parseInt()和Number()函数,利用map和reduce操作实现一个string2int()函数
- js创建一个MAP对象并存取值
- 用json方式实现在 js 中建立一个map
- 用js写一个实现map
- heatmap.js 一个用canvas画热力图的利器
- heatmap.js 一个用canvas画热力图的利器
- map.js的编写(js编写一个对象的方式)
- heatmap.js 一个用canvas画热力图的利器
- JS自定义一个Map类
- 用js实现一个map对象
- js创建一个MAP对象并存取值
- js创建一个MAP对象并存取值