key-value 형태로 다양한 자료형 개체(Entity)를 저장하는 자료구조(Map)
class Dictionary {
constructor (items = {}) {
this.items = items;
}
}
…(spread)를 활용해서 객체 데이터 셋을 반환한다.
getBuffer () {
return { ...this.items };
}
clear () {
return this.items = {};
}
Object에 내장되어있는 key 메서드를 통해 key를 array로 반환할 수 있는데, array의 length의 통해 크기를 반환한다.
size () {
return Object.keys(this.items).length;
}
has (key) {
return this.items.hasOwnProperty(key);
}
set (key, value) {
this.items[key] = value;
}
위에 있던 key의 존재여부 확인을 통해 key가 있다면 key를 확인하여 value를 반환하거나, 없다면 undefined를 반환한다.
get (key) {
return this.has(key) ? this.items[key] : undefined;
}
위에 있던 key의 존재여부 확인을 통해 key가 있다면 key를 확인하여 삭제하고 true를 반환하고, 아니면 false를 반환한다.
remove (key) {
if (this.has(key)) {
delete this.items[key];
return true;
}
return false;
}
Object에 내장되어있는 key 메서드를 통해 key를 array로 반환한다.
keys () {
return Object.keys(this.items);
}
Object에 내장되어있는 values 메서드를 통해 values를 array로 반환
values () {
return Object.values(this.items);
}
해당 개체가 있는지 확인하고 존재한다면 함수를 수행한다.
each (fn) {
for (let k in this.items) {
if (this.has(k)) {
fn(k, this.items[k]);
}
}
}
function printDictionary(key, value) {
console.log(`key: ${key}, value: ${value}`);
}
관련 전체 코드는 Git에 업로드 해두었습니다.
Github_Dictionary