前几天项目上想用map集合一样的东西,简单拿对象拼了一下子,今天闲的慌实现一下
大家不要见笑
代码
var Map = function (){ /************基础变量**************/ var hashmap = {}; var keys = []; var vals = []; var entrys = []; var size = 0; var index = {}; var Entry = function(key,value){ var entryKey = key; var entryValue = value; this.getKey = function (){ return entryKey; }; this.getValue = function(){ return entryValue; }; }; /************基本方法 按字母排序**************/ this.clear = function(key) { hashmap[key] = undefined; var i = index[key]; entrys.splice(i,1); vals.splice(i,1); keys.splice(i,1); size --; }; this.entrySet = function() { return entrys; }; this.get = function(key){ return hashmap[key]; }; this.isEmpty = function() { if(hashmap) return true; return false; }; this.keySet = function() { return keys; }; this.put = function(key,value){ if(!this.get(key)){ entrys.push(new Entry(key,value)); keys.push(key); vals.push(value); index[key] = size; size ++; } else { var i = index[key]; entrys[i] = new Entry(key,value); vals[i] = value; } hashmap[key] = value; }; this.size = function() { return size; }; this.values = function() { return vals; };};/************扩展方法**************/Map.prototype = { containsKey : function(key) { if(this.get(key)) return true; return false; }, putAll : function(set) { for(var e in set){ if(set[e]){ this.put(e,set[e]); } } }, remove : function(key) { var v = this.get(key); this.clear(key); return v; }};var h = new Map();h.put('a',10);h.put('b',11);h.put('c',3);h.put('d',5);console.info(h.size());h.clear('a');console.info(h.containsKey('a'));console.info(h.containsKey('b'));console.info(h.size()); console.log(h.entrySet());console.log(h.keySet());console.log(h.values()); for(var i in h.entrySet()){ var obj = h.entrySet()[i]; console.log(obj.getKey() + ":" + obj.getValue());}
以上所述就是本文的全部内容了,希望大家能够喜欢。
新闻热点
疑难解答