Ich mache eine Chrome-App, die erweiterte Object.keys() benötigt, die ich nirgends finden kann. Hier ist ein Teil meines Codes.Erweiterte JavaScript-Objektschlüssel
Dictionary = {
C: {
"calculation": {"definitions":["a process or result of calculating
something.", "careful thought and planning that is done usually for
selfish reasons.]}
},
Search: function(word) {
var foundWordInfo = {Word:null, Definitions:[]};
var allDictionaryKeys = Object.keys(Dictionary);
var firstLetter = word.charAt(0).toUpperCase();
var letterIndex = allDictionaryKeys.indexOf(firstLetter);
var wordKeys = Object.keys(Dictionary[firstLetter]);
for(i=0; i<wordKeys.length; i++) {
if (wordKeys[i] == word) {
foundWordInfo.Word = wordKeys[i];
break;
} else {}
}
return foundWordInfo;
};
Die Funktionsweise ist Sie
verwendenvar search = Dictionary.Search("calculation");
, wo die Suche Variable auf den Dictionary.Search foundWordInfo Objekt gleich sind.
Die Suchvariable gibt das Wort zurück, aber die Definitionen werden immer entweder als undefiniert oder als Null zurückgegeben. Ich habe versucht, Dinge wie
var definitions = wordKeys[i].Definitions;
und
var definitions = Dictionary[letterIndex][wordKeys[i]].Definitions;
aber nichts, was ich habe bisher Werke verwendet. Ich würde so etwas wie
var definitions = wordKeys[i].Definitions;
aber von Rechts wegen jetzt lieber werde ich nutzen, was ich bekommen kann. Jede Hilfe wird geschätzt. Vielen Dank.
Sie sind für 'var Definitionen = Dictionary [first] [wordKeys [i]] suchen. Definitions' (' firstLetter', nicht 'letterIndex'). Dies ist jedoch ein bisschen eine unangenehme Datenstruktur, und es ist mit dem Verhalten gemischt. Wie wäre es, die Suchfunktion zu trennen und 'Dictionary's Werte-Arrays zu erstellen? – Ryan
Ich denke, es ist einen Versuch wert. Ich werde es versuchen. –
Ich habe gerade festgestellt, dass ich nicht kann. Ich brauche jeden Buchstaben im Dictionary als Objekte, damit ich das Wort mit seinen Daten speichern kann. Wenn ich es zu einem Array mache, würde ich nur einen Wert pro Wort speichern können, was bedeutet, dass ich einem Wort nicht mehrere Definitionen hinzufügen könnte. –