【问题标题】:How to call an external variable in a forEach loop in javascript如何在javascript的forEach循环中调用外部变量
【发布时间】:2023-12-12 21:00:01
【问题描述】:

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

编辑: 如果我把 .this 拿走,结果是完全一样的。

【问题讨论】:

  • this.newArray.push(newElement);更改为newArray.push(newElement);
  • newArray 仅被声明,但 not assigned any value like empty array。所以。做 newArray.push(newElement);也会出错。开始它应该是var newArray = [] 然后,newArray.push(newElement);

标签: javascript variables foreach scope this


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    如果您在forEach 循环中打印this,您会发现newArray 没有绑定到this

    【讨论】: