2016-12-19 8 views
0

Ich versuche, einen Wert von einem Objekt zu bekommen, und ich kann es einfach nicht bekommen. Das Maximum, das ich bekomme, ist that,have mit console.log(randomWords)Abrufen von Werten aus Deep-Objekt

Ich bin mir sicher, dass ich hier etwas falsch mache, aber ich habe schon einige lange Stunden damit verbracht, den Fehler zu finden. Das Objekt sieht gut aus und ich kann einfach keinen Weg finden, auf diese tiefen Werte zuzugreifen.

var words = { 
     "that": { 
     "languages": { 
      "pt": { 
       "multiple_meanings": true, 
       "meaning": ["aquilo", "aquela"] 
      }, 
      "it": { 
       "multiple_meanings": false, 
       "meaning": "quella" 
      } 
     } 
     }, 
     "this": { 
     "languages": { 
      "pt": { 
       "multiple_meanings": true, 
       "meaning": ["este", "esta"] 
      }, 
      "it": { 
       "multiple_meanings": true, 
       "meaning": ["questo", "questa"] 
      }, 
      } 
     } 
    }; 
    var userChoseLanguage = "pt" 
    var wordsKeysArr = Object.keys(words).toArray; 
    var wordIndex = Math.floor(Math.random() * wordsKeysArr.length); 

    //store a random word in randomWord 
    var randomWord = recipesKeysArr[factIndex]; 

    //if user chose pt 
    if(userChoseLanguage == "pt"){ 
     //if multiple_meanings = true 
     if(randomWord.languages.multiple_meanings===true) { 
      console.log("This word has more than one meaning"); 
     } 
     else { 
      console.log(randomWord.languages.meaning); 
     } 
    } 
+0

Was Sie haben, ist nicht JSON. Es ist JavaScript. In Ihrem Beispiel ist nichts mit JSON zu tun. –

+0

Mögliches Duplikat von [Access/process (nested) Objekte, Arrays oder JSON] (http://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or-json) –

Antwort

0

"rezepteKeysArr [factIndex]" gibt nur den Wert basierend auf dem Index nicht das gesamte Objekt zurück.

So können Sie es als Index verwenden, um auf dieses bestimmte Objekt in "Worten" zuzugreifen.

if (userChoseLanguage == "pt") { 
    //if multiple_meanings = true 
    if (words[randomWord].languages[userChoseLanguage].multiple_meanings === true) { 
     console.log("This word has more than one meaning"); 
    }  
    else { 
     console.log(words[randomWord].languages[userChoseLanguage].meaning); 
    } 
} 
+0

Vielen Dank! Es hat funktioniert und mir geholfen, den Prozess zu verstehen. Sehr geschätzt. – spaceman

Verwandte Themen