有人告诉我我的职能:
for (const key of Object.keys(temp)) {
this.sessionData.push(temp[key]);
}
现在必须改为使用.map,
我在下面尝试过此方法:
Object.keys(temp).map(function(key) {
this.sessionData[key];
})
但是1我不知道它是否真正准确,而且,它无法访问其所在函数范围之外的数据,这是下面的整个函数:
public sessionData;
sessionDates(sessionsData) {
const temp = {};
this.sessionData = [];
sessionsData.forEach(session => {
const date = moment(session.startDatetime).format('DDMMYYYY');
if (temp[date]) {
temp[date].push(session);
} else {
temp[date] = [session];
}
});
Object.keys(temp).map(function(key) {
this.sessionData[key];
})
尝试使用以下内容...会话数据未定义,无法访问范围?
Object.keys(temp).map(function(key) {
this.sessionData[key];
})
但这可行。.
for (const key of Object.keys(temp)) {
this.sessionData.push(temp[key]);
}
因此,这个新的.map方法无法访问其范围之外的任何内容。
如果有人可以帮助,那就太好了!谢谢!
答案 0 :(得分:2)
在Javascript中,所有函数都可以从外部访问变量(称为“更高范围”)-这是该语言的优势之一,被称为“捕获”。
您的代码失败的原因是因为它在this.sessionData
声明中使用了function
,从而解决了问题,因为javascript中的this
有点复杂。但是您不需要它!
您还需要确保返回要输出的值。这是我的写法:
this.sessionData = Object.keys(temp).map(key => temp[key]);