JS模拟的Map类实现方法

来源:互联网 发布:淘宝月销量 编辑:程序博客网 时间:2024/06/05 14:27

这篇文章主要介绍了JS模拟的Map类实现方法,可实现模拟java中map属性按照键值对保存的功能,提供了采用数组和json两种实现方式,需要的朋友可以参考下

本文实例讲述了JS模拟的Map类。分享给大家供大家参考,具体如下:

根据java中map的属性,实现key----value保存

1、使用数组方式存储数据,(使用闭包)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function Map() {
  varstruct = function (key, value) {
    this.key = key;
    this.value = value;
  }
  varput = 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);
  }
  varget = function (key) {
    for(var i = 0; i < this.arr.length; i++) {
      if(this.arr[i].key === key) {
        returnthis.arr[i].value;
      }
    }
    returnnull;
  }
  varremove = function (key) {
    varv;
    for(var i = 0; i < this.arr.length; i++) {
      v =this.arr.pop();
      if(v.key === key) {
        continue;
      }
      this.arr.unshift(v);
    }
  }
  varsize = function () {
    returnthis.arr.length;
  }
  varisEmpty = function () {
    returnthis.arr.length <= 0;
  }
  this.arr =new Array();
  this.get = get;
  this.put = put;
  this.remove = remove;
  this.size = size;
  this.isEmpty = isEmpty;
}

2、使用JSON方式存储数据(使用原型方式拓展方法)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function Map() {
  this.obj = {};
  this.count = 0;
}
Map.prototype.put = function (key, value) {
  varoldValue = this.obj[key];
  if(oldValue == undefined) {
    this.count++;
  }
  this.obj[key] = value;
}
Map.prototype.get =function (key) {
  returnthis.obj[key];
}
Map.prototype.remove =function (key) {
  varoldValue = this.obj[key];
  if(oldValue != undefined) {
    this.count--;
    deletethis.obj[key];
  }
}
Map.prototype.size =function () {
  returnthis.count;
}
var map = new Map();
map.put("key","map");
map.put("key","map1");
alert(map.get("key"));//map1
map.remove("key");
alert(map.get("key"));//undefined

原创粉丝点击