javascript實現Map(覆蓋所有功能)
阿新 • • 發佈:2019-02-04
function HashMap() { // 定義長度 var length = 0; // 建立一個物件 var obj = new Object(); /** * 判斷Map是否為空 */ this.isEmpty = function() { return length == 0; }; /** * 判斷物件中是否包含給定Key */ this.containsKey = function(key) { return (key in obj); }; /** * 判斷物件中是否包含給定的Value */ this.containsValue = function(value) { for ( var key in obj) { if (obj[key] == value) { return true; } } return false; }; /** * 向map中新增資料 */ this.put = function(key, value) { if (!this.containsKey(key)) { length++; } obj[key] = value; }; /** * 根據給定的Key獲得Value */ this.get = function(key) { return this.containsKey(key) ? obj[key] : null; }; /** * 根據給定的Key刪除一個值 */ this.remove = function(key) { if (this.containsKey(key) && (delete obj[key])) { length--; } }; /** * 獲得Map中的所有Value */ this.values = function() { var _values = new Array(); for ( var key in obj) { _values.push(obj[key]); } return _values; }; /** * 獲得Map中的所有Key */ this.keySet = function() { var _keys = new Array(); for ( var key in obj) { _keys.push(key); } return _keys; }; /** * 獲得Map的長度 */ this.size = function() { return length; }; /** * 清空Map */ this.clear = function() { length = 0; obj = new Object(); }; /** * 遍歷map */ this.each = function(fn) { for ( var key in obj) { fn(key, obj[key]); } }; /** * map轉為字串 */ this.toString = function() { var str = "{"; for ( var k in obj) { str += "\"" + k + "\" : \"" + obj[k] + "\","; } str = str.substring(0, str.length - 1); str += "}"; return str; } } 例子: var map = new HashMap(); map.put("a","aa"); map.put("b",1); map.put("c",true); map.each(function (key, value) { console.log(key+" = "+value); });