語雀入口
https://www.yuque.com/along-n3gko/ezt5z9
前言
在字典中,存盤的時[鍵,值]對,其中鍵名是用來查詢元素的,字典也稱之為映射,
創建字典
與Set類相似,ECMAScript 6同樣包含了一個Map類的實作,即我們所說的字典,你會發現它和Set類很相似(但不同于存盤[值,值]對的形式,我們將要存盤的是[鍵,值]對),
1 function Dictionary() { 2 var items = {}; 3 }
方法
1 set(key,value):向字典中添加新元素, 2 delete(key):通過使用鍵值來從字典中移除鍵值對應的資料值, 3 has(key):如果某個鍵值存在于這個字典中,則回傳true,反之則回傳false, get(key):通過鍵值查找特定的數值并回傳, 4 clear():將這個字典中的所有元素全部洗掉, 5 size():回傳字典所包含元素的數量,與陣列的length屬性類似, 6 keys():將字典所包含的所有鍵名以陣列形式回傳, 7 values():將字典所包含的所有數值以陣列形式回傳,
has方法
首先實作has(key)方法,后面會被set和remove等方法呼叫,
1 this.has = function(key) { 2 return key in items; 3 };
set方法
該方法接受一個key和value作為引數
1 this.set = function(key, value) { 2 items[key] = value; 3 };
delete方法
該方法接受一個key值,使用has方法查詢是否存在,存在則洗掉
1 this.delete = function (key) { 2 if (this.has(key)) { 3 delete items[key]; 4 return true; 5 } 6 return false; 7 };
get方法
1 this.get = function (key) { 2 return this.has(key) ? items[key] : undefined; 3 };
values方法
1 this.values = function () { 2 var values = []; 3 for (var k in items) { 4 if (this.has(k)) { 5 values.push(items[k]); 6 } 7 } 8 return values; 9 };
clear方法
1 this.clear = function(){ 2 items = {}; 3 };
size方法
1 this.size = function(){ 2 return Object.keys(items).length; 3 };
keys方法
1 this.keys = function() { 2 return Object.keys(items); 3 };
getItems方法
1 this.keys = function() { 2 return Object.keys(items); 3 };
使用場景
物件本身作為字典
在寫業務代碼的時候,我很多時候看到小伙伴寫代碼的時候寫了過多的具有高度頻率重復的一些鍵值對的對應,或者說if,else的判斷,在這種情況下,如果其列舉屬性和值比較固定,建議其作為一個列舉字典固定存盤和全域使用或者按需使用,這樣代碼會精簡很多,比如:
// old codes let text = ''; if(status === 1){ text = '沒有開課'; } else if(status === 2) { text = '上課中' } else { text = '沒有這個課程'; } // better codes in status.js or enum.js const statusDict = { 1:'沒有開課', 2:'上課中', } const getStatusText = (status) => { const defaultText = '沒有這個課程'; if(!status) return defaultText; return statusDict[status] || defaultText; } // 在vue.js 中有過濾器這樣的方法, //如果你的應用中高頻使用一種過濾器,且針對業務較固定,可以考慮定義為全域過濾器,字典結構維護和使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/88361.html
標籤:JavaScript
上一篇:鏈表
下一篇:散串列
