Ich arbeite an einem Projekt, das den Klassiker löst"Wirres Wort" -Puzzle in vielen Zeitungen. Die Grundidee des Projekts ist, dass es ein verschlüsseltes Wort (keine Leerzeichen oder Sonderzeichen) akzeptiert, jede Permutation des Wortes generiert, jede Permutation anhand eines von meinem Professor gelieferten "Wörterbuchs" überprüft und dann jede Permutation hinzufügt, die eigentlich ein Englisch ist Wort an ein Array, das dann weiter verarbeitet wird, um das Ergebnis zu erhalten.
Derzeit stoße ich auf ein auftretendes ProblemWenn ich versuche zu prüfen, ob eine Permutation im "Wörterbuch" ist. Der folgende Code wurde von meinem Professor bereitgestellt und erstellt ein "Wörterbuch" aus einer externen Textdatei. Seiner Meinung nach sollte das Wörterbuch [w] eine Zahl zurückgeben, die mit dem Wort gepaart ist, das die Häufigkeit des Wortes oder "undefiniert" darstellt, wenn das Wort nicht im Wörterbuch enthalten ist.
function readDictionary() {
/**
* @type {string[]}
*/
const lines = fs.readFileSync("count_1w.txt", "utf-8").split("n");
var line;
const dictionary = {};
for (line of lines) {
line = line.trim();
let array = line.split("t");
if (array.length > 1) {
let word = array[0];
let count = array[1];
if (lexicon[word]) {
dictionary[word] = parseFloat(count);
}
}
}
return Object.freeze(dictionary);
}
function getDictionary() {
if (dictionary === null) {
dictionary = readDictionary();
}
return dictionary;
}
var dictionary = getDictionary();
Der folgende Code, den ich geschrieben habe, sollte "true" zurückgeben, wenn das Wörterbuch [Buchstaben] nicht undefiniert ist ...
function inDict(letters) {
if (dictionary[letters] !== undefined){
return true;
}
else{
return false;
}
}
...In seinem aktuellen Status wirft es jedoch den TypeError in den Titel dieses Beitrags, wobei "eat" die erste Permutation der generierten Eingabe ist. Beachten Sie, dass in meinem eigentlichen Code readDictionary (), getDictionary () und var dictionary = getDictionary alle oben inDict () deklariert sind.
Wenn Sie weitere Informationen benötigen, wenden Sie sich bitte anFragen. Ich bin am Ende meines persönlichen JavaScript-Wissens angelangt, und bei mehreren Google-Suchen wurde nichts gefunden, was in meinem speziellen Fall geholfen hat. Anregungen und Meinungen werden sehr geschätzt!
Antworten:
0 für die Antwort № 1Die Fehlermeldung ist eindeutig: dictionary
hat den Wert undefined
Warum ist das so?
Das Problem ist, dass die Funktion getDictionary
kehrt zurück undefined
. Die Bedingung dictionary === null
ist niemals true
weil dictionary
hat den Anfangswert undefined
und undefined === null
ist false
.
Also, was du wirklich tust, ist
var dictionary; // initial value is undefined
dictionary = dictionary;
was tut nichts.
Ich verstehe nicht, warum Sie brauchen getDictionary
überhaupt. Einfach initialisieren dictionary
direkt:
var dictionary = readDictionary();
Alternativ können Sie:
Initialisieren dictionary
mit null
(aber warum sollten Sie?)
var dictionary = null;
dictionary = getDictionary();
Vergleiche mit undefined
stattdessen:
function getDictionary() {
if (dictionary === undefined) {
dictionary = readDictionary();
}
return dictionary;
}
Insgesamt, getDictionary
ist schlecht konzipiert, da es eine implizite Abhängigkeit von dictionary
gibt aber auch einen Wert zurück.