我正在运行一个map函数,我希望它在满足条件时返回一个函数,否则运行另一个函数。
但问题是,当条件不满足时,函数运行的次数与条件为false一样多。我只想让第二个函数只运行一次。
所以这是我的代码:
handleVote(name, url) {
this.props.bandsVoted.map(band => {
if (band.band_name === name) {
console.log("it's a match!");
this.props.dispatch(addVote(band.objectId, band.votes));
} else {
console.log("addNewBand just ran");
this.props.dispatch(addNewBand(name, url));
}
});
}
我正在使用react,javascript,并且可以使用lodash。有什么建议?谢谢!
编辑:尝试此操作但不能正常工作
handleVote(name, url) {
let runOnce = true;
this.props.bandsVoted.forEach(band => {
if (band.band_name === name && runOnce) {
console.log("it's a match!");
this.props.dispatch(addVote(band.objectId, band.votes));
runOnce = false;
} else if (band.band_name !== name && runOnce) {
console.log("addNewBand just ran");
this.props.dispatch(addNewBand(name, url));
runOnce = false;
}
});
}
答案 0 :(得分:0)
首先,当你想要的只是循环时使用map是错误的。然后只是存储一些标志。这应该适合你:
handleVote(name, url) {
let matched = false
this.props.bandsVoted.forEach(band => {
if (band.band_name === name) {
console.log("it's a match!");
matched = true
this.props.dispatch(addVote(band.objectId, band.votes));
}
});
if (!matched) {
this.props.dispatch(addNewBand(name, url));
}
}