如何在javascript中调用forEach循环中的外部变量

问题描述 投票:0回答:2

我试图在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;
}

编辑:如果我拿走。这个结果是完全一样的。

javascript variables foreach scope this
2个回答
0
投票

删除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;
}

0
投票

你应该使用newArray.push(newElement);而不是this.newArray.push(newElement);

如果你在this循环中打印forEach,你会发现newArray不会与this绑定。

© www.soinside.com 2019 - 2024. All rights reserved.