2016-12-19 69 views
0

我试图从一个对象中获取一个值,但我无法得到它。 我得到的最大值是that,have使用console.log(randomWords)从深度对象中检索值

我确定我在这里做错了什么,但我已经花了很长时间试图找到错误。该对象看起来很好,我无法找到访问这些深层值的方法。

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

你有什么不是JSON。它是JavaScript。在你的例子中没有与JSON相关的东西。 –

+0

[访问/进程(嵌套)对象,数组或JSON]的可能重复(http://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or-json) –

回答

0

“recipesKeysArr [factIndex]”只返回基于索引的值而不是整个对象。

因此,您可以将它用作索引来访问“单词”中的特定对象。

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

谢谢!它的工作,并帮助我了解过程。非常感谢。 – spaceman