js 中map的几种实现方式
- 简单使用
1, 通过对象方式:
var myHash = {}; myHash["deviceID"] = "HY_000001"; myHash["cameraID"] = "SX_000001"; for(key in myHash){ document.write( "key = " + key + "; value = " + myHash[key] + "<br />"); }
2,通过数组方式:
var myHash = []; myHash.push("deviceID"); myHash["deviceID"] = "HY_000001"; myHash.push("cameraID"); myHash["cameraID"] = "SX_000001"; for(key in myHash){ document.write( "key = " + key + "; value = " + myHash[key] + "<br />"); }
- 通过对象方式定义map
function getMap() { //初始化map_,给map_对象增加方法,使map_像Map var map_ = new Object(); map_.put = function(key, value) { map_[key+'_'] = value; }; map_.get = function(key) { return map_[key+'_']; }; map_.remove = function(key) { delete map_[key+'_']; }; map_.keyset = function() { var ret = ""; for(var p in map_) { if(typeof p == 'string' && p.substring(p.length-1) == "_") { ret += ","; ret += p.substring(0,p.length-1); } } if(ret == "") { return ret.split(","); } else { return ret.substring(1).split(","); } }; return map_; } var map = getMap(); map.put("395","12,21,52,89,35"); map.put("396","121111,2222221,5333332,8444449,3555555"); alert(map.get("395"));//输出:12,21,52,89,35 alert(map.keyset()); //输出:395,396
- 通过对象原型方式定义map
function HashMap(){ this.map = {}; } HashMap.prototype = { put : function(key , value){ this.map[key] = value; }, get : function(key){ if(this.map.hasOwnProperty(key)){ return this.map[key]; } return null; }, remove : function(key){ if(this.map.hasOwnProperty(key)){ return delete this.map[key]; } return false; }, removeAll : function(){ this.map = {}; }, keySet : function(){ var _keys = []; for(var i in this.map){ _keys.push(i); } return _keys; } }; HashMap.prototype.constructor = HashMap; var hashMap = new HashMap(); hashMap.put('key' ,'value'); hashMap.put('key1' ,'value'); console.log(hashMap.get('key')); console.log(hashMap.keySet()); console.log(hashMap.remove('key')); console.log(hashMap.keySet());