Rumah  >  Artikel  >  hujung hadapan web  >  Membina Word Unscrambler dengan JavaScript (bahagian 4)

Membina Word Unscrambler dengan JavaScript (bahagian 4)

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-16 18:26:02881semak imbas

Hei semua! ?

Kali terakhir, saya melakukan pengembaraan mini mencari API terbaik, dan selepas menguji beberapa pilihan, saya memilih Wordnik. Ia mempunyai pangkalan data perkataan yang besar, dan walaupun mengambil masa seminggu untuk mendapatkan kunci API, saya akhirnya mendapatnya. Kini tiba masanya untuk menyepadukannya dan menyemak sama ada perkataan yang dijana daripada pilih atur kami sebenarnya sah.

Cabaran: Mengesahkan Perkataan

Satu perkara yang saya sedar ialah kebanyakan API kamus, termasuk Wordnik, tidak mempunyai cara langsung untuk menyemak sama ada perkataan wujud. Mereka memberikan takrifan dan contoh tetapi bukan pengesahan terus.
Untuk mengatasi masalah ini, saya menggunakan titik akhir skor Scrabble Wordnik. Logiknya mudah: jika perkataan mempunyai skor Scrabble, ia dianggap sah.

Berikut ialah kod untuk melaksanakan pengesahan ini:

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); 
}

Memecahkannya

fungsi async ialahValidWord(perkataan)

Fungsi ini bertanggungjawab untuk menyemak sama ada perkataan tertentu wujud dalam Wordnik API dengan menanyakan titik akhir skor Scrabblenya.

  1. Persediaan URL:

    • Fungsi ini membina permintaan API menggunakan perkataan yang ingin kami semak dan menambahkannya pada URL asas untuk titik akhir skor Scrabble.
    • Contoh: Untuk perkataan "epal", URLnya ialah: https://api.wordnik.com/v4/word.json/apple/scrabbleScore?api_key=YOUR_API_KEY.
  2. Permintaan API:

    • await fetch(url) menghantar permintaan HTTP ke Wordnik API.
    • Pengendalian respons:
      • 200 (OK): Jika API mengembalikan status 200, ini bermakna perkataan itu wujud dan mempunyai skor Scrabble. Kami menganggap ini sebagai perkataan yang sah dan kembali benar.
      • 404 (Tidak Ditemui): Jika API mengembalikan 404, perkataan itu tidak ditemui dalam kamus dan kami mengembalikan palsu.
      • Sebarang kod status lain direkodkan sebagai ralat dan kami mengembalikan palsu untuk menunjukkan perkataan itu tidak sah atau terdapat masalah.

fungsi async descrambleWords()

Ini ialah fungsi utama yang menguraikan perkataan input dan mengesahkan setiap pilih atur.

  1. Dapatkan input:

    • Ia mula-mula mengambil perkataan yang dikacau daripada medan input menggunakan nilai document.getElementById('scrambledInput').
  2. Jana pilih atur:

    • Fungsi ini memanggil generatePermutations(input) untuk menjana semua kemungkinan gabungan perkataan yang dikacau.
  3. Sahkan setiap perkataan:

    • Ia kemudian menggelung setiap pilih atur dan memanggil isValidWord(perkataan) untuk menyemak sama ada ia sah.
    • Jika perkataan itu sah (iaitu, ia wujud dalam Wordnik API), ia akan ditambahkan pada tatasusunan Kata yang sah.

Building a Word Unscrambler with JavaScript (part 4)
Saya akan berkongsi pautan langsung sebaik sahaja saya mencari cara untuk melindungi kunci API saya sebelum menolak ke GitHub.

Satu lagi halangan ialah had kadar yang dikenakan oleh API Wordnik. Apabila saya melebihi had, proses pengesahan mencecah ralat 429 (Terlalu Banyak Permintaan), menghentikan segala-galanya. Penyelesaian yang berpotensi yang saya sedang pertimbangkan ialah menambahkan kelewatan apabila had dicapai untuk mengelak daripada membebankan API.

Jika anda mempunyai sebarang idea atau cadangan yang lebih baik, sila kongsi dalam ulasan atau hubungi saya di Twitter.

Seterusnya: Saya akan berusaha untuk mengoptimumkan prestasi, mencari penyelesaian kepada had kadar dan memastikan input hanya menerima rentetan, tiada nombor.
Nantikan lebih banyak kemas kini!

Atas ialah kandungan terperinci Membina Word Unscrambler dengan JavaScript (bahagian 4). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn