2012-03-19 104 views
0

我無法訪問本身是大對象屬性的對象數組。當數組本身是對象的屬性時,無法訪問數組對象

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

上述語句返回兩個對象,每個具有是一個屬性的陣列的,看似,對象的有效陣列(在此示例「技能」)。我不能訪問「技能」數組屬性。我最終試圖獲取的數據是「item_name」屬性。據我所知,應該通過可訪問:

skillprofiles[0].skills[0].item_name 

有趣的是,驗證「技能」屬性的類型與代替陣列「的typeof」返回「對象」。這可能是因爲我正在將代碼中的一個對象數組從一個對象傳遞到另一個對象。我認爲我正確地做了這件事,並且似乎已經通過我的日誌記錄證實了這一點。

更新與實際數據:

[{ 
"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 
}] 
}] 

更新2:

鑑於答覆迄今,看來我應該能夠運行以下命令:

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

我可以從控制檯執行此操作,但是從我的代碼運行時,控制檯語句返回爲「未定義」

+0

您是否試過skillprofiles.skills [0] .item_name或skillprofiles.skills.item_name? – 2012-03-19 17:28:38

+0

我認爲你要麼向我們展示真實/工作代碼,要麼你必須將代碼包含在你建立'skillprofiles'和'skills'對象的地方。就目前而言,我們沒有關於這些對象真正的信息。 FYI:'typeof [1,2,3] ==「object」' - 這對陣列來說是正常的。 – jfriend00 2012-03-19 17:28:46

+0

您需要發佈數據的實​​際外觀。從你在這裏發佈的信息來看,這是不可能的。 – Pointy 2012-03-19 17:29:19

回答

1

在你的第一塊代碼中,技能直接是技能形態的一個孩子。而在第二個,你寫skillprofiles [o]。技能。如果第一個作品,也許你的代碼應該是:

skillprofiles.skills[0].item_name 
0

隨着該數據結構,適當的訪問將是:

skillprofiles[i].skills[j].item_name 

你可以看到它在這裏工作:http://jsfiddle.net/jfriend00/wPLZZ/


skillprofiles是一個對象數組,因此您從數組中獲取對象:

skillprofiles[i] 

該數組中的每個對象,都具有多個屬性和那些屬性之一被命名爲skills,所以你會得到這個屬性與

skillprofiles[i].skills 

skills屬性的內容是另一個數組,所以你會得到從阿雷這個項目:

skillprofiles[i].skills[j] 

該數組擁有自己的屬性的對象,所以你會訪問這個特定屬性:

skillprofiles[i].skills[j].item_name