2012-03-19 17 views
0

それ自体が大きなオブジェクトの属性であるオブジェクトの配列にアクセスすることはできません。配列オブジェクト自体がオブジェクトの属性である場合、配列オブジェクトにアクセスできません

console.log(skillprofiles); 
console.log(skillprofiles.skills); 

上記の文は、それぞれのオブジェクト(この例では「スキル」)の、一見、有効な配列である属性を持つ2つのオブジェクトの配列を返します。

「スキル」配列属性にアクセスできません。私が最終的に得ようとしているデータは、「item_name」属性です。代わりに、配列の「typeof演算」リターン「オブジェクト」と「スキル」属性の種類を確認し、興味深いことに

skillprofiles[0].skills[0].item_name 

:私の知る限りでは、それは経由してアクセスできる必要があります。これは、コード内のオブジェクトの配列を別のオブジェクトに転送するためです。私はこれを正しくやっていると思って、私の声明で確認したようです。実際のデータと

UPDATE:

[{ 
"skillprofile_id": 144, 
"skillprofile_name": " On-boarding", 
"start_date": "January 30 2012", 
"progress": 0, 
"complete_date": " ", 
"category": 1053, 
"skills": [{ 
    "category": "Acquire: Onboard New Hires", 
    "item_name": "3. On-boarding a New Hire - Day 1", 
    "skill_type": "activity", 
    "object_id": 68, 
    "duration": "8:00:00", 
    "sco_status_code": 6, 
    "action": "activity", 
    "has_forums": false 
}, { 
    "category": "Acquire: Onboard New Hires", 
    "item_name": "4. On-boarding Checklist", 
    "skill_type": "activity", 
    "object_id": 67, 
    "duration": "1:00:00", 
    "sco_status_code": 6, 
    "action": "activity", 
    "has_forums": false 
}] 
}, { 
"skillprofile_id": 143, 
"skillprofile_name": " Setting Up Systems", 
"start_date": "January 30 2012", 
"progress": 0, 
"complete_date": " ", 
"category": 1053, 
"skills": [{ 
    "category": "Acquire: Onboard New Hires", 
    "item_name": "1. Office Organization", 
    "skill_type": "activity", 
    "object_id": 65, 
    "duration": "4:00:00", 
    "sco_status_code": 6, 
    "action": "activity", 
    "has_forums": false 
}, { 
    "category": "Acquire: Onboard New Hires", 
    "item_name": "2. Welcome to the Team Documents", 
    "skill_type": "activity", 
    "object_id": 66, 
    "duration": "2:00:00", 
    "sco_status_code": 6, 
    "action": "activity", 
    "has_forums": false 
}, { 
    "category": "Acquire: Onboard New Hires", 
    "item_name": "3. Welcome Documents: Feedback ", 
    "skill_type": "activity", 
    "object_id": 150, 
    "duration": "1:00:00", 
    "sco_status_code": 6, 
    "action": "activity", 
    "has_forums": false 
}] 
}] 

UPDATE 2:

これまでの回答を考えると、私が次のように実行することができるはずと思われる:

$.each(skillprofiles, function(){ 
    console.log(this.skills) 
}); 

私ができますコンソールからこれを行うが、私のコードから実行すると、コンソールステートメントは "undefined"に戻る。

+0

skillprofiles.skills [0] .item_nameまたはskillprofiles.skills.item_nameを試しましたか? –

+0

私は本当の/働くコードを表示しなければならないか、 'skillprofiles'と' skills'オブジェクトを作る場所にコードを含めなければならないと思います。今のところ、これらのオブジェクトに実際に何があるかについての情報はありません。 FYI: 'typeof [1,2,3] ==" object "' - これは配列にとっては正常です。 – jfriend00

+0

データが実際にどのように見えるかを投稿する必要があります。あなたがここに投稿したものから、それを伝えることは不可能です。 – Pointy

答えて

1

最初のコードブロックでは、スキルはスキルプロファイルの子です。一方、第2のものでは、skillprofiles [スキル]スキルを書く。最初の1が動作する場合、多分あなたのコードは次のようになります。そのデータ構造により

skillprofiles.skills[0].item_name 
0

、適切なアクセスは次のようになります。

skillprofiles[i].skills[j].item_name 

あなたはそれはここで働いて見ることができます:http://jsfiddle.net/jfriend00/wPLZZ/


skillprofilesはオブジェクトの配列なので、配列からオブジェクトを取得します。

あなたはなるだろうので、別の配列は、

その配列内の各オブジェクト、プロパティの数を持っており、それらの特性の一つはあなたがskills財産の

skillprofiles[i].skills 

内容とそのプロパティを取得しますskillsという名前が付けられています

:あなたはこれで特定のプロパティにアクセスするように、配列は独自のプロパティを持つオブジェクトを保持していること

skillprofiles[i].skills[j] 

:これでそのARAYからのアイテム

skillprofiles[i].skills[j].item_name 
関連する問題