2016-08-27 8 views
-1

JavaScriptチュートリアルを行っています。私は配列の長さを表示する必要がありますが、私は上記のエラーを取得している呼び出しで。私はここで推測何jqueryエラーがキャッチされませんtypeerror:プロパティ 'length'が未定義です

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プロパティということです。ヘルプは承認されます。ありがとうございます..

+1

その前に 'if'がありますか? – Barmar

+1

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

+0

'bio [" skills "]'は 'bio.portfolio [0] .skills'でなければなりません。 「スキル」に達する前に、オブジェクトと配列のレベルがいくつかあることは分かりませんか? – Barmar

答えて

0

エラーメッセージがbio["skillls"]が存在しないことを意味し、

bio.portfolio[0].skills 

をまたは:代わりに、パスがあると思われます。私はbio.portfolio[0].skills.lengthがあなたが望むものだと思います。 portfolioは値が配列のオブジェクトbioのプロパティです。この配列の最初の要素は、プロパティskillsを持つオブジェクトです。このプロパティの値は配列なので長さがあります。

1

パスが間違っています。オブジェクトの第1世代には属性skillsはありません。あなたは

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

説明のポイントとして、これは最善の答えです。それに加えて、最初の回答だったので、それは受け入れられる回答でなければなりません。 –

0

使用を好む場合は、このbio.portfolio[0]['skills'].lengthまたはbio.portfolio[0].skills.lengthラーテンが、その後bio["skills"]

関連する問題