Javascript / React.js相当于Ruby .select {| x |条件

时间:2015-09-23 13:48:00

标签: javascript for-loop reactjs

我在javascript(React.j)中编写了以下函数,它使用了for循环:

getOpponentTeam: function(playerTeamId){
  var matches = this.state.matches;
  var player_team = this.state.player.team.name
  for (i in matches){
    if (matches[i].home_team_id == playerTeamId){
      var result = player_team + " vs. " + this.getTeamName( matches[i].away_team_id )
    }
    else if (matches[i].away_team_id == playerTeamId){
      var results = this.getTeamName( matches[i].home_team_id ) + " vs. " + player_team
    }
    else {
      var result = "Not playing"
    }
    return result
  };
},

问题是,for循环的工作方式,大多数时候它返回“Not playing”,即使“匹配”包含满足条件的数据。这是因为for循环是短路的。

有没有办法减少匹配数组,就像你可以在ruby中做的那样,通过说match.select {| x |一些条件}?

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题。

<强> 1。错误使用for循环。

您正在循环遍历数组,就像它是一个对象一样。您需要使用以下实现:

for ( var i = 0; i < matches.length; i++) {
    if (matches[i].home_team === playerTeamId) {
        // etc
    }
}

<强> 2。您将在第一次迭代时返回

正如Nit在评论中指出的那样,你将在第一个循环中返回,因此无法继续。

第3。要回答你想要的问题

我不熟悉Ruby,但我认为您可能会要求UnderscoreJS中的过滤操作。