用 Javascript 写的一个映射表类

该类可以通过关键字(key)查找相对应的值(value),关键字的类型可以是String、Number、Boolean类型,值的类型不限,代码如下:

运行代码框

1<script> function struct(key, value){ this.key = key; this.value = value; } function setAt(key, value){ for (var i = 0; i < this.map.length; i++) { if ( this.map[i].key === key ) { this.map[i].value = value; return; } } this.map[this.map.length] = new struct(key, value); } function lookUp(key) { for (var i = 0; i < this.map.length; i++) { if ( this.map[i].key === key ) { return this.map[i].value; } } return null; } function removeKey(key) { var v; for (var i = 0; i < this.map.length; i++) { v = this.map.pop(); if ( v.key === key ) continue; this.map.unshift(v); } } function getCount(){ return this.map.length; } function isEmpty(){ return this.map.length <= 0; } function classMap() { this.map = new Array(); this.lookUp = lookUp; this.setAt = setAt; this.removeKey = removeKey; this.getCount = getCount; this.isEmpty = isEmpty; } window.onload = function(){ var map = new classMap(); alert("is the map empty? " + map.isEmpty()); // string to array map.setAt("sw1", new Array("sw1_1")); map.setAt("sw2", new Array("sw2_1", "sw2_2")); map.setAt("sw3", new Array("sw3_1", "sw3_2", "sw3_3")); alert(map.lookUp("sw5")); // null alert(map.lookUp("sw2")); // "sw2_1, sw2_2" alert(map.getCount()); // 3 // number to string map.setAt(1, "sw1"); map.setAt(2, "sw2"); alert(map.lookUp(2)); // "sw2" map.setAt(2, new Array("sw2_1", "sw2_2")); alert(map.lookUp(2)); // "sw2_1, sw2_2" alert(map.getCount()); // 5 // string to number map.setAt("1", 1); map.setAt("2", 2); alert(map.lookUp("1")); // 1 alert(map.lookUp(1)); // "sw1" map.setAt("sw3", 33); alert(map.lookUp("sw3")); // 33 alert(map.getCount()); // 7 // number to number map.setAt(1, 11); map.setAt(2, 22); alert(map.lookUp(1)); // 11 alert(map.getCount()); // 7 map.removeKey(1); alert(map.lookUp(1)); // null alert(map.getCount()); // 6 // boolean to array map.setAt(false, new Array("false", "true")); alert(map.lookUp(false)); alert(map.getCount()); // 7 } </script>
Published At
Categories with 网页设计
Tagged with
comments powered by Disqus