假設(shè)你被賦予了一長串的字母,看起來像是一個(gè)混亂的單詞,你被要求解開它,你會(huì)如何解開這個(gè)詞?今天,我將向您展示如何構(gòu)建一個(gè)函數(shù),只要該單詞存在于我們的字典中,它將幫助您解密任何單詞。
開始
我們需要通過安裝一個(gè)非常好的字典來設(shè)置我們的項(xiàng)目,該字典將用于過濾單詞。
在本地服務(wù)器上,
安裝 npm 包“英語單詞數(shù)組”
構(gòu)建我們的功能
現(xiàn)在我們已經(jīng)安裝了字典,我們需要構(gòu)建一個(gè)函數(shù)來幫助我們利用字典中的單詞來解密單詞。
此函數(shù)將只有一個(gè)參數(shù),即要解密的單詞。
導(dǎo)入我們的詞典
現(xiàn)在我們需要將字典導(dǎo)入到函數(shù)中,以幫助我們根據(jù)邏輯過濾單詞。
如果開發(fā)環(huán)境中不允許使用該語句,則必須導(dǎo)入字典并將其作為模塊使用。require
通過字典過濾
這是我們函數(shù)中最重要的部分。在本節(jié)中,我將編寫非常簡單的邏輯來過濾字典并返回我們正在尋找的單詞。
我將在字典上使用,第一步是檢查我們嘗試解密的單詞的長度是否等于字典中當(dāng)前項(xiàng)目的長度。這將為我們節(jié)省大量的時(shí)間和內(nèi)存,并使我們的邏輯更加整潔。Array.filter()
處理重復(fù)發(fā)生
因?yàn)槲也恢滥阍噲D解開的詞;
我將檢索字典中的當(dāng)前項(xiàng)目
使用方法將其轉(zhuǎn)換為數(shù)組split()
遍歷數(shù)組
然后將每個(gè)字母的重復(fù)出現(xiàn)次數(shù)存儲在變量中reOccurence1
我將對提供的加擾單詞執(zhí)行相同的操作,但在不同的變量中。reOccurence2
分解它數(shù)。
只需查看對象,您就會(huì)注意到它們是相等的,這意味著我們找到了一個(gè)與加擾字母匹配的單詞。
解開單詞
在了解了如何存儲和處理重復(fù)發(fā)生之后,我們現(xiàn)在必須遍歷第一個(gè)對象并檢查字母的重復(fù)發(fā)生次數(shù)是否與另一個(gè)對象相同。
為了讓你理解上面的代碼,舉個(gè)例子,字典中有一個(gè)名字叫“simon”的單詞,你正試圖解開這個(gè)詞“mnios”。
如果我們的函數(shù)應(yīng)該執(zhí)行到重復(fù)出現(xiàn)部分,我們將恰好有這兩個(gè)對象,其中包含每個(gè)字母和它們重復(fù)的次數(shù)。
如果它們是相同的,那么毫無疑問,字典中的當(dāng)前項(xiàng)目就是我們正在尋找的單詞。
我將創(chuàng)建一個(gè)變量作為我們的計(jì)數(shù)器。在循環(huán)遍歷對象時(shí)找到的每個(gè)匹配項(xiàng)上,此計(jì)數(shù)器都會(huì)增加。
現(xiàn)在,如果計(jì)數(shù)器等于數(shù)組中的鍵數(shù),我們將返回字典中的當(dāng)前項(xiàng),因?yàn)檫@是我們正在尋找的單詞。
這是完整的代碼
測試我們的功能
假設(shè)我有這些字母“izrbera”,我想解開它。這就是我調(diào)用函數(shù)的方式。
這是結(jié)果
奇怪
火盆
此函數(shù)返回 包含與加擾字母匹配的單詞的 ,如果未找到單詞,則返回空。array array