用 javascript 写的一个映射表类
该类可以通过关键字(key)查找相对应的值(value),关键字的类型可以是String、Number、Boolean类型,值的类型不限,代码如下:
运行代码框<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 arraymap.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")); // nullalert(map.lookUp("sw2")); // "sw2_1, sw2_2"alert(map.getCount()); // 3// number to stringmap.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 numbermap.setAt("1", 1);map.setAt("2", 2);alert(map.lookUp("1")); // 1alert(map.lookUp(1)); // "sw1"map.setAt("sw3", 33);alert(map.lookUp("sw3")); // 33alert(map.getCount()); // 7// number to numbermap.setAt(1, 11);map.setAt(2, 22);alert(map.lookUp(1)); // 11alert(map.getCount()); // 7map.removeKey(1);alert(map.lookUp(1)); // nullalert(map.getCount()); // 6// boolean to arraymap.setAt(false, new Array("false", "true"));alert(map.lookUp(false));alert(map.getCount()); // 7}</script> [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
2006-01-08 15:04:17.0