我会尽我所能解释这个问题。 首先我使用的是下划线。 我正在为一组数据进行非常简单的数据可视化。
此时,我只是想获取我想要的数据。
在我进一步解释之前,这是我的数据片段。
var data =
[
{
"id": "a09f4967-10a8-53c1-b53f-8e49ee255734",
"type": "chat",
"requested_by": "zoidberg@example.com",
"initial_message": "And here I am using my own lungs like a sucker.",
"created_at": 1420190706057,
"page_url": "http://www.awesome3ftcakes.com/contact-us.html",
"referrer_url": "http://www.bing.com/search?q=top",
"entry_url": "unknown",
"ip_address": "132.145.187.8",
"user_agent": "Mozilla/5.0 (Windows NT 6.1; rv:11.4) Gecko/20100101 Firefox/11.4.6",
"latitude": 51.339695,
"longitude": 12.373075,
"chat_waittime": 10,
"chat_duration": 205,
"survey_score": 30,
"language_code": "",
"transcript": [
{
"date": 1420190706057,
"alias": "Zoidberg",
"message": "And here I am using my own lungs like a sucker."
},
{
"id": "jerome@awesome3ftcakes.com",
"date": 1420190733788,
"alias": "Jerome",
"message": "Hi. I'm Troy McClure. You may remember me from such self-help tapes as \"Smoke Yourself Thin\" and \"Get Some Confidence, Stupid!\""
}
]
}, ...
所以,这是我的问题:
我创建了一个构造函数,如下所示:
function ChatSession(data) {
this.duration = data.chat_duration;
this.score = data.survey_score;
this.repId = data.transcript;
};
var mappedObjects = _.map(data, function(chatSessionData) {
return new ChatSession(chatSessionData)
});
console.log(mappedObjects);
如果你看一下上面的图片^,你会看到我得到我的新ChatSession对象,有持续时间,然后是成绩单,然后得分。
我遇到问题的是这个...我想在成绩单中更具体。我想引用转录数组中的第二个对象,并具体获取id或别名。
我尝试过很多东西,但基本上都会遇到同样的错误。例如,我试过这个:
function ChatSession(data) {
this.duration = data.chat_duration;
this.score = data.survey_score;
this.repId = data.transcript[1].id;
};
我在控制台中收到以下消息:
未捕获的TypeError:无法读取属性' id'未定义的
即使我关闭了id部分,错误仍然是:
未捕获的TypeError:无法读取属性' 1'未定义的
非常感谢任何帮助。我把头撞在墙上。
答案 0 :(得分:1)
您的收藏集中的一个或多个数据对象的transcript
为undefined
。使用下面的构造函数来检测集合中哪些数据对象具有错过的transcript
属性。
function ChatSession(data) {
this.duration = data.chat_duration;
this.score = data.survey_score;
this.repId = (data.transcript && data.transcript[1]) ? data.transcript[1].id : undefined;
};