2016-12-19 70 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