2016-08-27 3 views
-1

Я читаю учебник по JavaScript. Я должен показать длину массива, но при вызове я получаю вышеуказанную ошибку.jquery error uncaught typeerror: невозможно прочитать свойство 'length' undefined

var bio = { 
"portfolio": [ 
    { 
     "name": "Sambit Mishra", 
     "role": "Frontend Web Developer", 
     "contacts": { 
      "mobile": "+91-8888888888", 
      "email": "[email protected]" 
     }, 
     "skills": ["Awesome ", "Frontend Design ", "Javascript ", "Python "], 
     "message": "Have a great day ahead." 
    } 
]} 
if(bio["skills"].length > 0) { 
$("#header").append(HTMLskillsStart); 

var formattedSkill = HTMLskills.replace("%data%", bio.skills[0]); 
$("#skills").append(formattedSkill); 
formattedSkill = HTMLskills.replace("%data%", bio.skills[1]); 
$("#skills").append(formattedSkill); 
formattedSkill = HTMLskills.replace("%data%", bio.skills[2]); 
$("#skills").append(formattedSkill); 
formattedSkill = HTMLskills.replace("%data%", bio.skills[3]); 
$("#skills").append(formattedSkill);} 

Что я здесь делаю, что свойство length для bio ["skills"] показано как неопределенное. Помощь будет подтверждена. Спасибо ..

+1

Должен ли быть «если» до этого? – Barmar

+1

bio ["portfolio"] [0] ["skills"]? –

+0

'bio [" skills "]' должно быть 'bio.portfolio [0] .skills'. Разве вы не видите, что есть несколько уровней объекта и массива, прежде чем перейти к «навыкам»? – Barmar

ответ

0

сообщение об ошибке означает, что bio["skillls"] не существует. Я думаю, что bio.portfolio[0].skills.length - это то, что вы хотите. portfolio - свойство объекта bio с массивом в качестве значения. Первым элементом этого массива является объект, который имеет свойство skills. Значение этого свойства является массивом и поэтому имеет длину.

1

У вас неправильный путь. В первом поколении объекта нет свойства skills. Вместо этого, путь кажется:

bio.portfolio[0].skills 

Или, если вы предпочитаете

bio['portfolio'][0]['skills'] 
+1

Как точка уточнения, это лучший ответ, плюс это был первый ответ, поэтому он должен быть принятым ответом. –

0

Используйте этот bio.portfolio[0]['skills'].length или bio.portfolio[0].skills.length Rathen затем bio["skills"]