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

Смежные вопросы