需要map功能才能运行另一个功能一次

时间:2017-04-27 15:26:28

标签: javascript reactjs lodash

我正在运行一个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;
      }
    });
  }

1 个答案:

答案 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));
  }
}