- 出处:http://redhacker.blueidea.com/archives/2006/3637.shtml
- By 凌云志 发表于 2006-11-13 0:03:00
- 在Java中,Map对象是一个十分有用的对象,因此,我最近一直想去自己实现一个Js的Map类,后来发现网络上有一个不错的实现,参考网上流传的一个实现,我整理了一下,并且准备再加一个sort()方法,具体实现,有时间再补上。
- 代码如下:
- <script>
- function struct(key, value) {
- this.key = key;
- this.value = value;
- }
- function put(key, value){
- for (var i = 0; i < this.arr.length; i++) {
- if ( this.arr[i].key === key ) {
- this.arr[i].value = value;
- return;
- }
- }
- this.arr[this.arr.length] = new struct(key, value);
- }
- function get(key) {
- for (var i = 0; i < this.arr.length; i++) {
- if ( this.arr[i].key === key ) {
- return this.arr[i].value;
- }
- }
- return null;
- }
- function remove(key) {
- var v;
- for (var i = 0; i < this.arr.length; i++) {
- v = this.arr.pop();
- if ( v.key === key ) {
- continue;
- }
- this.arr.unshift(v);
- }
- }
- function size() {
- return this.arr.length;
- }
- function isEmpty() {
- return this.arr.length <= 0;
- }
- function Map() {
- this.arr = new Array();
- this.get = get;
- this.put = put;
- this.remove = remove;
- this.size = size;
- this.isEmpty = isEmpty;
- this.sort = sort;
- }
- function sort() {
- }
- </script>
- <script>
- //测试
- var map = new Map();
- map.put("dgq","redhacker");
- map.put("dgq","douguoqiang");
- map.put(" array",["a","b","c"]);
- alert(map.get("dgq"));
- alert(map.get("array"));
- </script>
- ===============================================
- 今天大致思略了一下,不能加sort()方法,原因也不罗嗦了,现在将上面的例子重新整理一下,改为一个函数,方便以后调用。
- <script>
- function Map() {
- var struct = function(key, value) {
- this.key = key;
- this.value = value;
- }
- var put = function(key, value){
- for (var i = 0; i < this.arr.length; i++) {
- if ( this.arr[i].key === key ) {
- this.arr[i].value = value;
- return;
- }
- }
- this.arr[this.arr.length] = new struct(key, value);
- }
- var get = function(key) {
- for (var i = 0; i < this.arr.length; i++) {
- if ( this.arr[i].key === key ) {
- return this.arr[i].value;
- }
- }
- return null;
- }
- var remove = function(key) {
- var v;
- for (var i = 0; i < this.arr.length; i++) {
- v = this.arr.pop();
- if ( v.key === key ) {
- continue;
- }
- this.arr.unshift(v);
- }
- }
- var size = function() {
- return this.arr.length;
- }
- var isEmpty = function() {
- return this.arr.length <= 0;
- }
- this.arr = new Array();
- this.get = get;
- this.put = put;
- this.remove = remove;
- this.size = size;
- this.isEmpty = isEmpty;
- }
- </script>
- <script>
- var map = new Map();
- map.put("re","redhacker");
- map.put("do","douguoqiang");
- map.put("gq","dougq");
- alert("map的大小为:" + map.size())
- alert("key为re的map中存储的对象为:" + map.get("re"));
- map.remove("re");
- alert("移除key为re的对象后,获取key为re的map中存储的对象为:" + map.get("re"));
- alert("map移除一个元素后的大小为:" + map.size());
- alert("map是否是一个空map:" + map.isEmpty());
- </script>