首頁  >  文章  >  web前端  >  使用 JavaScript 建立 Word Unscrambler(第 4 部分)

使用 JavaScript 建立 Word Unscrambler(第 4 部分)

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-16 18:26:02884瀏覽

大家好! ?

上次,我進行了一次尋找最佳 API 的小冒險,在測試了幾個選項後,我選擇了 Wordnik。它有一個龐大的單字資料庫,雖然花了一周的時間才拿到 API 金鑰,但我終於拿到了。現在是時候整合它並檢查從我們的排列生成的單字是否實際上有效。

挑戰:驗證單字

我意識到的一件事是,大多數字典 API(包括 Wordnik)沒有直接的方法來檢查單字是否存在。它們提供了定義和範例,但沒有直接驗證。
為了解決這個問題,我使用了 Wordnik 的 Scrabble 分數。邏輯很簡單:如果一個單字有拼字遊戲分數,它就被認為是有效的。

以下是實作此驗證的程式碼:

async function isValidWord(word) {
    const apiKey = 'API_KEY'; // use your own API keys
    const url = `https://api.wordnik.com/v4/word.json/${word}/scrabbleScore?api_key=${apiKey}`;

    try {
        const response = await fetch(url);

        if (response.status === 200) {
            return true;  // Word is valid
        } else if (response.status === 404) {
            return false; // Word not found in dictionary
        } else {
            console.error(`Error: Received status ${response.status} for word "${word}"`);
            return false; 
        }
    } catch (error) {
        console.error('Error checking word validity:', error);
        return false;
    }
}

async function descrambleWords() {
    const input = document.getElementById('scrambledInput').value;
    const combinations = generatePermutations(input); 
    const validWords = [];

    // Check each word one by one for validity
    for (const word of combinations) {
        const isValid = await isValidWord(word);
        if (isValid) {
            validWords.push(word); // Only push valid words
        }
    }

    const categorizedWords = categorizeByLength(validWords); 
    displayResults(categorizedWords); 
}

分解它

非同步函數 isValidWord(word)

此函數負責透過查詢其 Scrabble 分數端點來檢查 Wordnik API 中是否存在給定單字。

  1. 網址設定

    • 函數使用我們要檢查的單字建立 API 請求,並將其附加到 Scrabble 分數端點的基本 URL。
    • 範例:對於單字“apple”,URL 為: https://api.wordnik.com/v4/word.json/apple/scrabbleScore?api_key=YOUR_API_KEY。
  2. API 請求:

    • wait fetch(url) 向 Wordnik API 發送 HTTP 請求。
    • 響應處理
      • 200(OK):如果 API 傳回 200 狀態,則表示該單字存在且具有 Scrabble 分數。我們將其視為有效單字並傳回 true。
      • 404(找不到):如果 API 傳回 404,則表示在字典中找不到該單字,我們傳回 false。
      • 任何其他狀態碼都會被記錄為錯誤,我們傳回 false 來指示該單字無效或有問題。

非同步函數 descrambleWords()

這是解讀輸入單字並驗證每個排列的主要函數。

  1. 取得輸入

    • 它首先使用 document.getElementById('scrambledInput').value 從輸入欄位中取得亂序單字。
  2. 生成排列:

    • 函數呼叫generatePermutations(input)來產生亂序單字的所有可能組合。
  3. 驗證每個單字:

    • 然後循環遍歷每個排列並呼叫 isValidWord(word) 來檢查它是否有效。
    • 如果單字有效(即它存在於 Wordnik API 中),則會將其新增至 validWords 陣列。

Building a Word Unscrambler with JavaScript (part 4)
一旦找到一種方法來保護我的 API 金鑰,然後再推送到 GitHub,我將立即分享即時連結。

另一個障礙是 Wordnik 的 API 所施加的速率限制。當我超出限制時,驗證過程會遇到 429(請求過多)錯誤,一切都會停止。我正在考慮的潛在解決方案是在達到限制時添加延遲,以避免 API 過載。

如果您有任何更好的想法或建議,請隨時在評論中分享或在 Twitter 上聯繫我。

下一步:我將致力於優化效能,找到速率限制的解決方案,並確保輸入僅接受字串,不接受數字。
請繼續關注更多更新!

以上是使用 JavaScript 建立 Word Unscrambler(第 4 部分)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn