2017-02-07 30 views
1

ein Wörterbuch App in erschaffe React ich im JSON-Wörterbuch geladen haben, die wie folgt aussieht:eine Schleife durch JSON-Datei Versuch

{ 
"DIPLOBLASTIC": "Characterizing the ovum when it has two primary germinallayers.", 
"DEFIGURE": "To delineate. [Obs.]These two stones as they are here defigured. Weever.", 
"LOMBARD": "Of or pertaining to Lombardy, or the inhabitants of Lombardy.", 
"BAHAISM": "The religious tenets or practices of the Bahais.", 
"FUMERELL": "See Femerell." 
} 

Der Benutzer gibt ein Wort in das Eingabefeld und der Wert ist dann in die folgende Funktion übergeben, um nach einem passenden Schlüssel in JSON zu suchen. Übereinstimmende Wörter werden dann in eine Reihe von Ergebnissen mit ihrem jeweiligen Wert geschoben.

handleSearch: function(term) { 
    var term = term; 
    var results = []; 
    for (var key in Dictionary) { 
     if (Dictionary.hasOwnProperty(key)) { 
      if (term == Dictionary[key]) { 
      results.push(Dictionary[key]) 
      } 
     } 
    } 
    console.log(results) 
}, 

Allerdings habe ich Mühe, eine erfolgreiche Art und Weise zu finden, um es zu durchlaufen, um Ergebnisse zu erhalten. Die Konsole protokolliert ein leeres Array.

Kann mir bitte jemand vorschlagen, wo ich falsch liege?

+0

was ist der Wert des Begriffs? –

Antwort

0

Sie können eine bessere Übereinstimmung erzielen, indem Sie eine Vergleichsfunktion hinzufügen (im Beispiel unten ist dies die compareTerm Funktion). Was ich dort getan habe, ist zu vergleichen, ob der Begriff STARTS mit dem Wörterbuchschlüssel, wenn Sie wollen, dass es ein Teil der Zeichenfolge sein soll, können Sie es von zu > -1 ändern.

// compare function which needs to be added somewhere 
function compareTerm(term, compareTo) { 
    var shortenedCompareTo = compareTo 
    .split('') 
    .slice(0, term.length) 
    .join(''); 

    return term.indexOf(shortenedCompareTo.toLowerCase()) === 0; 
} 

// only changed the compare function 
handleSearch: function(term) { 
    var results = []; 
    for (var key in Dictionary) { 
     if (Dictionary.hasOwnProperty(key)) { 
      if (compareTerm(term, Dictionary[key])) { 
       results.push(Dictionary[key]) 
      } 
     } 
    } 

    console.log(results); 
}, 
Verwandte Themen