我正在尝试从Google日历中提取所选数据,以便在客户端使用ng-repeat以表格形式显示它。在服务器端,由于缺乏对嵌套
的理解,我无法遍历数据简化日历JSON
const calendarList = {
items: [{
summary: 'ABC',
start: [{ datetTime: '2017-12-10T01:40:18.000Z'}],
attendees: [{ displayName: 'John'}]
},
{
summary: 'DEF',
start: [{ datetTime: '2017-12-11T01:40:18.000Z'}],
attendees: [{ displayName: 'Jane'}, { displayName: 'Mary'}]
}]
};
第一层是从项目中获取项目,提取摘要,开始(日期时间)和与会者(displayName)。有多个与会者
console.log(calendarList.items[0].summary); //ABC
console.log(calendarList.items[0].start.dateTime); //2017-12-10T01:40:18.000Z
console.log(calendarList.items[0].attendees[0].displayName); //John
首先我将对象转换为数组,然后我可以访问项目
var calendararray = Object.keys(calendarList)
console.log(calendararray)
// [ 'kind',
// 'etag',
// 'summary',
// 'updated',
// 'timeZone',
// 'accessRole',
// 'defaultReminders',
// 'nextSyncToken',
// 'items' ]
从项目我写了一个for循环,这是它无法正常工作的地方。错误消息无法读取未定义的属性“长度”
for(var i = 0; i < calendararray.items.length; i++)
{
var items = calendarList.items[i];
newGcal.summary += items.summary;
newGcal.datetime += items.start.datetime;
for(var j = 0; j < items.attendees.length; j++)
{
var attendees = items.attendees[j];
newGcal.attendees += attendees.displayName;
}
}
我有console.log calendararray.items [0] ,其中包含摘要,开始和与会者的列表
console.log(calendararray.items[0])
[ 'kind',
'etag',
'id',
'status',
'htmlLink',
'created',
'updated',
'summary',
'description',
'location',
'creator',
'organizer',
'start',
'end',
'iCalUID',
'sequence',
'attendees',
'guestsCanInviteOthers',
'privateCopy',
'reminders' ]
请提供任何帮助或建议
答案 0 :(得分:1)
首先我将对象转换为数组,然后我可以访问项目
那是你出错的地方。不要把任何东西变成任何东西;您可以直接轻松地处理数据。
.forEach()
对此有帮助,因此您不必编写容易出错的for
循环。
以下是一个列出简化calendarList
中所有数据的示例。您应该可以从此处获取实际数据中的其他相关项目。
我还重新格式化了您的calendarList
数据,以使对象/数组关系更加清晰:
const calendarList = {
items: [
{
summary: 'ABC',
start: [
{ datetTime: '2017-12-10T01:40:18.000Z' }
],
attendees: [
{ displayName: 'John' }
]
},
{
summary: 'DEF',
start: [
{ datetTime: '2017-12-11T01:40:18.000Z' }
],
attendees: [
{ displayName: 'Jane' },
{ displayName: 'Mary' }
]
}
]
};
calendarList.items.forEach( function( item ) {
console.log( 'summary:', item.summary );
item.start.forEach( function( dt ) {
console.log( ' start:', dt.datetTime );
});
item.attendees.forEach( function( attendee ) {
console.log( ' attendee:', attendee.displayName );
});
});