【问题标题】:How to call an external variable in a forEach loop in javascript如何在javascript的forEach循环中调用外部变量
【发布时间】:2019-02-15 06:53:28
【问题描述】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多