/*
* MAP 객체, MAP 함수 구현
*
* 인터페이스:
* size() MAP 요소 수를 가져옵니다.
* isEmpty() 여부를 결정합니다. MAP이 비어 있음
*clear()는 MAP의 모든 요소를 삭제합니다.
* put(key, value)는 MAP에 요소(key, value)를 추가합니다.
*remove(key)는 지정된 MAP의 요소를 삭제합니다. KEY, 성공하면 True를 반환하고, 실패하면 False를 반환합니다.
* get(key) 지정된 KEY의 요소 값 VALUE를 가져오고, 실패하면 NULL을 반환합니다.
* element(index) 지정된 인덱스에서 요소를 가져옵니다(사용 KEY 및 VALUE)를 가져오는 element.key, element.value는 실패 시 NULL을 반환합니다.
* containKey(key) MAP에 지정된 KEY의 요소가 포함되어 있는지 확인
* containValue(value) MAP에 다음이 포함되어 있는지 확인 지정된 VALUE의 요소
* 값() MAP 배열의 모든 VALUE 가져오기(ARRAY)
* 키() MAP에 있는 모든 KEY의 배열(ARRAY) 가져오기
*
* 예 :
* var map = new Map();
*
* map.put("key", "value")
* var val = map.get("key")
* …
*
*/
function Map() {
this.elements = new Array()
//MAP 요소 수 가져오기
this.size = function () {
return this.elements.length;
};
//MAP가 비어 있는지 확인
this.isEmpty = function() {
return (this .elements .length
};
//MAP의 모든 요소 삭제
this.clear = function() {
this.elements = new Array();
};
//MAP에 요소(키, 값) 추가
this.put = function(_key, _value) {
this.elements.push( {
key : _key ,
value : _value
})
};
//지정된 KEY의 요소를 삭제하고, 성공하면 True를 반환하고, 실패하면 False를 반환합니다.
this.removeByKey = 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;
};
//지정된 VALUE의 요소를 삭제하고, 성공하면 True를 반환하고, 실패하면 False를 반환합니다.
this.removeByValue = function( _value) {//removeByValueAndKey
var bln = false;
try {
for (i = 0; i < this.elements.length; i ) {
if (this.elements[i ].value == _value) {
this.elements.splice(i, 1);
return true;
}
}
} catch(e) {
bln = false;
}
return bln;
};
//지정된 VALUE의 요소를 삭제하고, 성공하면 True를 반환하고, 실패하면 False를 반환합니다.
this.removeByValueAndKey = function( _key,_value) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i ) {
if (this.elements[i] .value == _value && this.elements[i ].key == _key) {
this.elements.splice(i, 1)
return true; } catch (e) {
bln = false;
}
return bln;
//지정된 KEY의 요소 값 VALUE를 반환합니다. failure
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 false; return false;
};
/ /지정된 인덱스에서 요소를 가져옵니다(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;
//지정된 VALUE를 포함하는 MAP 요소인지 판단합니다.
this.containsObj = function(_key,_value) {
var bln = false; >try {
for (i = 0; i < this.elements.length; i ) {
if (this.elements[i].value == _value && this.elements[i].key = = _key) {
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에 있는 모든 VALUE의 배열(ARRAY) 가져오기
this.valuesByKey = function(_key ) {
var arr = new Array()
for (i = 0; i < this.elements.length; i ) {
if (this.elements[i].key == _key ) {
arr.push(this.elements[i].value)
}
}
return arr;
};
//KEY(ARRAY)의 MAP 배열에 있는 모든 항목 가져오기
this.keys = function() {
var arr = new 배열();
for (i = 0; i < this.elements.length; i ) {
arr.push(this.elements[i].key)
}
return arr;
};
//값을 통해 키 가져오기
this.keysByValue = function(_value) {
var arr = new Array()>for (i = 0 ; i < this.elements.length; i ) {
if(_value == this.elements[i ].value){
arr.push(this.elements[i].key); >}
}
return arr;
};
//MAP의 모든 키 배열 가져오기(ARRAY)
this.keysRemoveDuplicate = function() {
var arr = new Array();
for (i = 0; i < this.elements.length; i ) {
var flag = true; length;j ){
if(arr[j] == this.elements[i].key){
flag = false
break
}
}
if; (플래그){
arr.push(this.elements[i].key)
}
}
return arr;