我在 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”,即使“matches”包含满足条件的数据。这是因为for循环短路了。
有没有一种方法可以像在 ruby 中那样通过说 matches.select{ |x| 来减少匹配数组某些条件}?
最佳答案
您的代码存在一些问题。
<强>1。 for 循环的错误使用。
您正在循环遍历一个数组,就好像它是一个对象一样。您需要使用以下实现:
for ( var i = 0; i < matches.length; i++) {
if (matches[i].home_team === playerTeamId) {
// etc
}
}
<强>2。您将在第一次迭代中返回
正如 Nit 在评论中指出的那样,您将返回第一个循环,因此它无法继续。
<强>3。回答您想要的问题
我对Ruby不熟悉,但我想你可能会问 UnderscoreJS 中的过滤操作.
关于Javascript/React.js 相当于 Ruby .select{ |x|健康)状况 },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32741436/