Мне сказали, что моя функция:
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 не может получить доступ ни к чему за пределами своей области видимости.
Если кто-нибудь может помочь, это было бы потрясающе! Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В Javascript все функции могут обращаться к переменным извне (так называемая «более высокая область видимости») — это одна из сильных сторон языка и называется «захват».
Причина, по которой ваш код не работает, заключается в том, что он использует this.sessionData внутри объявления function, что вызывает проблемы, потому что this в javascript... несколько сложен. Но вам это не нужно!
Вам также необходимо убедиться, что вы возвращаете значение, которое хотите вывести. Вот как бы я это написал:
this.sessionData = Object.keys(temp).map(key => temp[key]);
В любой момент. Удачи с вашим проектом!
Вы ничего не возвращаете из обратного вызова карты и не сохраняете результат карты в переменной для последующего использования.