Превратите цикл for на объекте в .map

Мне сказали, что моя функция:

 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 не может получить доступ ни к чему за пределами своей области видимости.

Если кто-нибудь может помочь, это было бы потрясающе! Спасибо!

Вы ничего не возвращаете из обратного вызова карты и не сохраняете результат карты в переменной для последующего использования.

user47589 06.02.2019 16:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Javascript все функции могут обращаться к переменным извне (так называемая «более высокая область видимости») — это одна из сильных сторон языка и называется «захват».

Причина, по которой ваш код не работает, заключается в том, что он использует this.sessionData внутри объявления function, что вызывает проблемы, потому что this в javascript... несколько сложен. Но вам это не нужно!

Вам также необходимо убедиться, что вы возвращаете значение, которое хотите вывести. Вот как бы я это написал:

 this.sessionData = Object.keys(temp).map(key => temp[key]);

В любой момент. Удачи с вашим проектом!

Duncan Thacker 06.02.2019 16:12

Другие вопросы по теме