Pages

2014년 2월 21일 금요일

[JAVASCRIPT] JavaScript key:value 를 사용하는 HashMap 만들기

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/**
* key:value 를 사용하는 HashMap
* @example
* <pre>
* var map = new COMHashMap();
* map.put("key","value");       
* map.get("key");               
* map.length;            길이 반환        
* map.keys();            모든 키 객체반환        
* map.values():            모든 값 객체반환
* map.toQuaryString([option]);   key=value[option] 문자열반환
* map.clear();            초기화               
* map.next();            다음 객체 반환
* map.indexValue(index);위치로 값 찾기    
* map.splice(key);        key 삭제 
* map.point(key);        key 의 위치반환             
* </pre>
*/
var COMHashMap = function()
{
    this.obj = [];
    this.length = 0;        
    
    this.put = function(key, value)
    { 
        if( this.obj[key] == null )this.length++; 
        this.obj[key] = value; 
    };
 
    this.get = function(key)
    {
        return this.obj[key];
    };
    
    this.keys = function()
    {
        var keys = [];
        for ( var property in this.obj ) keys.push(property);
        return keys;
    };
    
    this.values = function()
    {
        var values = [];
        for ( var property in this.obj ) values.push(this.obj[property]);
        return values;
    };
    
    this.toQueryString = function(divMark)
    {
        var divMark = (typeof divMark == "undefined") ? "&" : divMark;
        var quaryString = "";
        var key = this.keys();
        var value = this.values();
        if ( this.length < 1 ) return "";
        
        for( var i = 0 ; i < this.length ; i++ )
        {
            if ( quaryString != "" )
                quaryString += divMark;
            quaryString +=     key[i] +"="+ value[i];
        }
        return quaryString;
    };
    
    this.remove = function(index)
    {
        var keys = this.keys();
        keys.splice(index, 1);
        var temp =[];                 
        for ( var i = 0 ; i < keys.length ; i++ )
        {
            temp[keys[i]] = this.obj[keys[i]];
        }     
        this.obj = temp;
        this.length = keys.length;
        index--;
    };
    
    this.indexOf = function(key)
    {
        var cnt = 0;
        for ( var i in this.obj )
        {
            if ( key == i ) return cnt;
                cnt++;    
        }
    };
    
    this.splice = function(spliceIndex)
    {
        var keys = this.keys();
        keys.splice(spliceIndex, 1);
        var temp =[];                 
        for ( var i = 0 ; i < keys.length ; i++ )
        {
            temp[keys[i]]=this.obj[keys[i]];
        }     
        this.obj = temp;
        this.length = keys.length;
        index--;
    };
 
    
    this.point = function(key)
    {
        var cnt = 0;
        for ( var i in this.obj )
        {
            if ( key == i ) return cnt;
                cnt++;    
        }
    };
 
    this.clear = function()
    {
        this.obj = [];
        this.length = 0;
    };
        
    var index = 0;
    this.next = function()
    {
        if ( index == this.length )
        {
            index = 0;
            return -1;
        }
        var values = this.values();
        var currentValue = values[index];     
        index++;
        return currentValue;
    };
 
    this.indexValue = function(Idx)
    {
        var keys = this.keys();
        return this.obj[keys[Idx]];
    };
};

댓글 없음:

댓글 쓰기