摘要:我對(duì)字典的簡(jiǎn)單學(xué)習(xí)字典的概念集合字典和散列表都可以來(lái)存儲(chǔ)不重復(fù)的值。字典也被稱為映射。中有集合類的實(shí)現(xiàn),也有字典類的實(shí)現(xiàn)。相關(guān)操作方法實(shí)現(xiàn)方法,判斷某個(gè)鍵值是否在這個(gè)字典中,有則返回。實(shí)現(xiàn)方法,將字典所有的值以數(shù)組的形式返回。
我對(duì)JS字典的簡(jiǎn)單學(xué)習(xí) 字典的概念
集合、字典和散列表都可以來(lái)存儲(chǔ)不重復(fù)的值。
在集合中我們使用[值,值]來(lái)保存,在字典和散列表中使用[鍵,值]來(lái)存儲(chǔ)數(shù)據(jù)。
字典也被稱為映射。
ES6中有集合Set類的實(shí)現(xiàn),也有字典Map類的實(shí)現(xiàn)。
function Dictionary() { var items = {}; }相關(guān)操作方法
實(shí)現(xiàn)has(key)方法,判斷某個(gè)鍵值是否在這個(gè)字典中,有則返回true。
this.has = function(key) { return key in items; }
實(shí)現(xiàn)set(key, value)方法,向字典中添加新元素。
this.set = function(key, value) { items[key] = value; }
實(shí)現(xiàn)remove(key)方法,從字典中移除鍵值對(duì)應(yīng)的數(shù)據(jù)值。
this.remove = function(key) { if(this.has(key)) { delete items[key]; return true; } return false; }
實(shí)現(xiàn)get(key)方法,查找特定的值。
this.get = function(key) { return this.has(key) ? items[key] : undefined; }
引申:undefined和null不一樣,null表示變量沒(méi)有值,undefined表示變量被聲明但未賦值。
實(shí)現(xiàn)values()方法,將字典所有的值以數(shù)組的形式返回。
this.values = function() { var values = []; for(var k in items) { if(this.hasOwnProperty(k)) { values.push(items[key]); } } return values; }
clear(),size(),keys()方法與Set類一致,這里不討論了。
實(shí)現(xiàn)getItems()方法
this.getItems = function() { return items; }使用Dictionary類
創(chuàng)建一個(gè)類的實(shí)例,然后給它添加三條電子郵件地址。
var dictionary = new Dictionary(); dictionary.set("Gandalf", "gandalf@email.com"); dictionary.set("John", "John@email.com"); dictionary.set("Tyrion", "Tyrion@email.com");
使用方法
console.log(dictionary.has("Gandalf")); //true console.log(dictionary.size()); //3 console.log(dictionary.keys()); //["Gandalf", "John", "Tyrion"]; console.log(dictionary.values()); //["Gandalf@email.com", John@email.com", "Tyrion@email.com"] console.log(dictionary.get("Tyrion")); //Tyrion@email.com
執(zhí)行以下代碼
dictionary.remove("John"); console.log(dictionary.keys()); //["Gandalf", "Tyrion"] console.log(dictionary.values()); //["Gandalf@email.com", "Tyrion@email.com"] console.log(dictionary.getItems()); //{Gandalf: "Gandalf@email.com", Tyrion: "Tyrion@email.com"}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82362.html
摘要:一向量字典樹字典樹,一種用空間換取時(shí)間的樹形數(shù)據(jù)結(jié)構(gòu),主要特點(diǎn)是利用字符串的公共前綴來(lái)挺升查詢性能。還有最終的數(shù)組表示的真實(shí)存儲(chǔ)的鍵值,存儲(chǔ)了,存儲(chǔ)了。這其中還有一種節(jié)點(diǎn)進(jìn)行了沖突的處理。 本文受深入探究Immutable.js的實(shí)現(xiàn)機(jī)制這篇文章啟發(fā),結(jié)合自己對(duì)Map源碼的解讀,談?wù)勎覍?duì)immutable-js中map數(shù)據(jù)結(jié)構(gòu)的理解,若有不正確的地方,歡迎指正。 一、Vector Tr...
摘要:我對(duì)棧的學(xué)習(xí)因?yàn)槭莻€(gè)新手,所以都是最簡(jiǎn)單的知識(shí)學(xué)習(xí)梳理。棧是一種遵從后進(jìn)先出原則的有序集合,新添加的或者待刪除的元素都保留在棧的末尾,稱作棧頂,另一端叫做棧底。棧的學(xué)習(xí)棧的創(chuàng)建創(chuàng)建一個(gè)類來(lái)表示棧。對(duì)于棧來(lái)說(shuō)只能用和方法來(lái)進(jìn)行添加和刪除元素。 我對(duì)棧的學(xué)習(xí) 因?yàn)槭莻€(gè)新手,所以都是最簡(jiǎn)單的知識(shí)學(xué)習(xí)梳理。 什么是棧 數(shù)組是計(jì)算機(jī)科學(xué)中最常用的數(shù)據(jù)結(jié)構(gòu),是數(shù)據(jù)元素的集合。有時(shí)候我們需要一種添加...
摘要:我對(duì)鏈表的學(xué)習(xí)什么是鏈表要存儲(chǔ)多個(gè)元素,數(shù)組可能是最常用的數(shù)據(jù)結(jié)構(gòu)。鏈表的學(xué)習(xí)創(chuàng)建一個(gè)鏈表各種方法表示要加入列表的項(xiàng),它包含一個(gè)屬性以及一個(gè)屬性,表示要添加到列表的值,表示指向列表下一個(gè)節(jié)點(diǎn)項(xiàng)的指針。 我對(duì)JS鏈表的學(xué)習(xí) 什么是鏈表 要存儲(chǔ)多個(gè)元素,數(shù)組可能是最常用的數(shù)據(jù)結(jié)構(gòu)。這種數(shù)據(jù)結(jié)構(gòu)非常方便,但是有一個(gè)缺點(diǎn):從數(shù)組的起點(diǎn)或者中間插入或移除項(xiàng)的成本非常高,因?yàn)樾枰苿?dòng)元素(比如你插...
摘要:我對(duì)集合的學(xué)習(xí)第一步知道相關(guān)概念集合是由一組無(wú)序且唯一的項(xiàng)組成的,在中已經(jīng)實(shí)現(xiàn)了類似的類。就是集合第二步實(shí)現(xiàn)相關(guān)操作方法首先實(shí)現(xiàn)方法,判斷值是否在集合中,返回布爾值。操作符還有另外一種實(shí)現(xiàn)方法,方法返回表明一個(gè)對(duì)象是否具有特定屬性的布爾值。 我對(duì)集合的學(xué)習(xí) 第一步知道相關(guān)概念 集合是由一組無(wú)序且唯一的項(xiàng)組成的,在ES6中已經(jīng)實(shí)現(xiàn)了類似的Set類。 function Set() { ...
摘要:但是實(shí)際寫程序中,我們經(jīng)常會(huì)寫出許多繁雜的丑陋的代碼。特別推薦,許多代碼讓我獲益匪淺,比如這里對(duì)的使用。用可以寫出很簡(jiǎn)單直觀的代碼,如下當(dāng)然,上面不考慮效率,這里有一個(gè)利用分治法思想的高效的方法。更多文章更多閱讀中參數(shù)的用法高級(jí)編程技巧 用 Python 時(shí)間也算不短了,但總感覺(jué)自己在用寫 C++ 代碼的思維寫 Python,沒(méi)有真正用到其作為腳本語(yǔ)言的優(yōu)勢(shì)。之前刷 LeetCode ...
閱讀 853·2021-11-24 09:38
閱讀 1085·2021-10-08 10:05
閱讀 2577·2021-09-10 11:21
閱讀 2800·2019-08-30 15:53
閱讀 1827·2019-08-30 15:52
閱讀 1964·2019-08-29 12:17
閱讀 3418·2019-08-29 11:21
閱讀 1609·2019-08-26 12:17