请原谅标题,我不知道该如何形容。我遇到了一个问题,我的代码更改了变量,没有任何业务变化,我不知道为什么。
代码:
getCalendar (parameters, callback) {
var returnData = this.calendars
// If limit parameter is set, remove all but n events
if (parameters.limit) {
returnData.forEach((calendar) => {
calendar.events = calendar.events.slice(0, parameters.limit)
})
}
callback(returnData)
}
this.calendars填充有以下所示的数据。 该代码应返回this.calendars的副本,事件数受parameter.limit限制。这确实可以按预期工作,但是此代码也以某种方式从this.calendars中删除了事件。因此,如果我在将parameters.limit设置为3的情况下运行代码,然后再次将parameters.limit设置为5的代码,则两次都将返回3个事件。
这是一个重要的节点应用程序。
this.calendars
[
{
id: '5e29843erkjfassfv1h8@group.calendar.google.com',
lastUpdate: '2019-09-18T10:16:32+02:00',
summary: 'Calendar1',
description: 'Description',
timeZone: 'Europe/Oslo',
updated: '2019-09-11T00:09:34.954Z',
events: [ [Object] ]
},
{
id: 'd3llqgg43irfkcf8pjfe8@group.calendar.google.com',
lastUpdate: '2019-09-18T10:16:32+02:00',
summary: 'Calendar 2',
description: 'Description',
timeZone: 'Europe/Oslo',
updated: '2019-09-16T16:36:41.373Z',
events: [
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object]
]
}
]
答案 0 :(得分:0)
您正在创建 this.calendars 的浅表副本,因此,当您更改 returnData 时,它也会同时更改 this.calendars 。试试这个。
var returnData = JSON.parse(JSON.stringify(this.calendars))