这个问题在很多方面都被提出过,但是我找不到必然的结果。
我有两个数组,我试图比较两者之间的日期并建立一个列表,添加一个类,并在日期匹配时更改状态。我觉得每种方法都不正确。这就是我所拥有的。我知道外部循环在内部循环完成之前仍在继续,但是我不确定如何解决它。似乎没有async / await就是一种简单的方法。
// 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);
});
答案 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);
});