嵌套forEach /等待嵌套完成

时间:2019-11-08 05:50:59

标签: javascript foreach

这个问题在很多方面都被提出过,但是我找不到必然的结果。

我有两个数组,我试图比较两者之间的日期并建立一个列表,添加一个类,并在日期匹配时更改状态。我觉得每种方法都不正确。这就是我所拥有的。我知道外部循环在内部循环完成之前仍在继续,但是我不确定如何解决它。似乎没有async / await就是一种简单的方法。

FIDDLE

// main event loop
events.forEach(event => {
  let {
    date
  } = event;
  // presaleEvent loop
  presaleEvents.forEach(presaleEvent => {
    let {
      presaleDate
    } = presaleEvent;
    if (presaleDate === date) {
      status = 'PRESALE EVENT';
      eventClass = 'presale';
    }
  });
// only 3, 5 & 6 should be presale events
  let eventNode = `<li class="event ${eventClass}">${status}</li>`;
  $(eventsList).append(eventNode);
});

1 个答案:

答案 0 :(得分:1)

我在发布问题后的片刻(以及将我的头撞在墙上的几个小时)后才知道这一点。

我只需要在父循环内但在内部循环外重置vars。

这是工作中的FIDDLE

// main event loop
events.forEach(event => {
  let {
    date
  } = event;
  status='EVENT'; // reset the status
  eventClass=''; // reset the eventClass
  // presaleEvent loop
  presaleEvents.forEach(presaleEvent => {
    let {
      presaleDate
    } = presaleEvent;
    if (presaleDate === date) {
      status = 'PRESALE EVENT';
      eventClass = 'presale';
    }
  });
// only 3, 5 & 6 should be presale events
  let eventNode = `<li class="event ${eventClass}">${status}</li>`;
  $(eventsList).append(eventNode);
});