全国统一服务热线:400-633-9193

Javacript中自定义的map.js 的方法

    网络     2017-12-22    1216

js中没有map这个类,只能自己写一个。以下map.js和map-util.js都是自定义的map,任选其一就可以。你可以用它来像java里new Map()和put()、remove()、get()等方法。

map.js:

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() {  
  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;  
}

map-util.js:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
function Map() {
  this.elements = new Array();
  var i;
  //获取MAP元素个数
  this.size = function() {
    return this.elements.length;
  };
  //判断MAP是否为空
  this.isEmpty = function() {
    return (this.elements.length < 1);
  };
  //删除MAP所有元素
  this.clear = function() {
    this.elements = new Array();
  };
  //向MAP中增加元素(key, value) 
  this.put = function(_key, _value) {
    this.elements.push( {
      key : _key,
      value : _value
    });
  };
  this.putFirst = function(_key, _value){
    var tempList = this.elements;
    this.elements = new Array();
    this.elements.push( {
      key : _key,
      value : _value
    });
    for(var i=0;i<tempList.length;i++){
      this.elements.push(
        tempList[i]
      );
    }
  }
  //删除指定KEY的元素,成功返回True,失败返回False
  this.remove = function(_key) {
    var bln = false;
    try {
      for (i = 0; i < this.elements.length; i++) {
        if (this.elements[i].key == _key) {
          this.elements.splice(i, 1);
          return true;
        }
      }
    } catch (e) {
      bln = false;
    }
    return bln;
  };
  //获取指定KEY的元素值VALUE,失败返回NULL
  this.get = function(_key) {
    try {
      for (i = 0; i < this.elements.length; i++) {
        if (this.elements[i].key == _key) {
          return this.elements[i].value;
        }
      }
    } catch (e) {
      return null;
    }
  };
  //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
  this.element = function(_index) {
    if (_index < 0 || _index >= this.elements.length) {
      return null;
    }
    return this.elements[_index];
  };
  //判断MAP中是否含有指定KEY的元素
  this.containsKey = function(_key) {
    var bln = false;
    try {
      for (i = 0; i < this.elements.length; i++) {
        if (this.elements[i].key == _key) {
          bln = true;
        }
      }
    } catch (e) {
      bln = false;
    }
    return bln;
  };
  //判断MAP中是否含有指定VALUE的元素
  this.containsValue = function(_value) {
    var bln = false;
    try {
      for (i = 0; i < this.elements.length; i++) {
        if (this.elements[i].value == _value) {
          bln = true;
        }
      }
    } catch (e) {
      bln = false;
    }
    return bln;
  };
  //获取MAP中所有VALUE的数组(ARRAY)
  this.values = function() {
    var arr = new Array();
    for (i = 0; i < this.elements.length; i++) {
      arr.push(this.elements[i].value);
    }
    return arr;
  };
  //获取MAP中所有KEY的数组(ARRAY)
  this.keys = function() {
    var arr = new Array();
    for (i = 0; i < this.elements.length; i++) {
      arr.push(this.elements[i].key);
    }
    return arr;
  };
}


  分享到:  
0.3369s