Как вызвать внешнюю переменную в цикле forEach в JavaScript - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь вызвать внешнюю переменную в контексте forEach.Поскольку я использую обозначение стрелки, это должно помочь, но переменная по-прежнему выглядит как неопределенная.

Это мой код:

transformSlots (slots) {
 var array = slots;
 var newArray;
 array.forEach(element => {
   var newElement = {
     day: dateFns.getDate(element.slot),
     month: dateFns.getMonth(element.slot),
     year: dateFns.getYear(element.slot),
     hour: dateFns.getHours(element.slot),
     numInterview: element.num,
     id_users_pending: 0,
     id_users_accepted: 0
   };
   this.newArray.push(newElement);
 });
 return array;
}

РЕДАКТИРОВАТЬ: Если я уберу. Это прочь, результат будет точно таким же.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вы должны использовать newArray.push(newElement); вместо this.newArray.push(newElement);.

Если вы напечатаете this в цикле forEach, вы обнаружите, что newArray не привязывается к this.

0 голосов
/ 15 февраля 2019

Удалить this.Это заставит код искать newarray в обратном вызове, а не вне цикла

transformSlots (slots) {
 var array = slots;
 var newArray;
 array.forEach(element => {
   var newElement = {
     day: dateFns.getDate(element.slot),
     month: dateFns.getMonth(element.slot),
     year: dateFns.getYear(element.slot),
     hour: dateFns.getHours(element.slot),
     numInterview: element.num,
     id_users_pending: 0,
     id_users_accepted: 0
   };
   newArray.push(newElement);
 });
 return array;
}
...