Dictionary

字典

by Chris_Walter

JavaScript

//實作Map類別
class Dictionary{
  constructor(){
    this.items = {};
  }
	has(key){
	  return this.items.hasOwnProperty(key);
	}
	set(key, value){
	  this.items[key] = value;
	}
	get(key){//回傳單個屬性的值
	  return this.has(key) ? this.items[key] : undefined;  
	}
	keys(){//回傳所有鍵的陣列
	  return Object.keys(this.items);
	}
	values(){//回傳所有值的陣列
	  const values = [];
		for(let val in this.items){
		  if(this.has(val)){
			  values.push(this.items[val]);
			}
		}
		return values;
	}
	remove(key){
	  if(this.has(key)){
		  delete this.items[key];
			return true;
		}
		return false;
	}
	clear(){//清空物件
	  this.items = {};
	}
	size(){//把物件轉成陣列並使用陣列的length方法元素的數量
	  return Object.keys(this.items).length;
	}
	getItems(){//返回一個物件包含所有鍵與值
	  return this.items;
	}
}

let d1 = new Dictionary();
d1.set('Book','JavaScript');
d1.set('Food','pizza');
console.log(d1.values());
console.log(d1.size());
console.log(d1.keys());
console.log(d1.getItems());