首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查数组元素是否存在于另一个数组中

检查数组元素是否存在于另一个数组中
EN

Stack Overflow用户
提问于 2018-09-25 23:20:15
回答 1查看 866关注 0票数 1

我正在开发一个React JS应用程序,这是一个比赛比分预测应用程序。

使用以下代码,应用程序当前显示即将到来的比赛列表,用户可以单击并输入预测。

if(!this.props.loading && !this.props.error){
upcomingmatches = this.props.upcmgMatches.map(upcomingMatch => {
    return <UpcomingMatch
        key={upcomingMatch.id}
        teamA={upcomingMatch.teamA}
        teamB={upcomingMatch.teamB}
        matchKickoff={upcomingMatch.matchKickoff}
        clicked={() => this.addInitInputMatchResultHandler(upcomingMatch.id, upcomingMatch.teamA, upcomingMatch.teamB, upcomingMatch.matchKickoff)}
    />
});
}

我想修改它,以便如果用户已经为匹配做出了预测,那么它将显示组件,但带有额外的信息,例如他们当前的预测。

我的组件可以访问两个对象数组,这两个对象数组是从Firebase表接收并转换为数组的。

upcmgMatches显示用户可以预测的所有当前即将到来的匹配。

userPredictions显示了用户预测的所有比赛,但仍然没有播放。所以这可以包括upcmgMatches中的所有匹配,如果他们对所有匹配进行了预测,或者只是这些匹配的子集,或者如果他们没有进行任何预测,我猜是一个空数组。

这些数组如下所示。

因此,来自upcmgMatchesid应该与userPredictions中的matchID匹配

upcmgMatches = [{
    "matchKickoff": "2018-09-22T10:45",
    "teamA":"Roosters",
    "teamB":"Dragons",
    "id":"-LN-pNFv-rFJQkunM1Tv"
  },  
  {
    "matchKickoff": "2018-09-22T19:00",
    "teamA": "Storm",
    "teamB": "Sharks",
    "id": "-LMrXWzcEjN_u_jlULuJ"
  }]

userPredictions = [{
    "matchID": "-LMrXWzcEjN_u_jlULuJ",
    "teamAName": "Storm",
    "teamAScore": "22",
    "teamBName": "Sharks",
    "teamBScore": "12",
    "userId": "J2QO4OHT5vc7aAkT9vcdREo1IuW2",
    "id": "-LMvzSoaMAhBUhgWMOpM"
  }]

所以我想我修改后的逻辑应该是..

对于upcmgMatches中的每个匹配项,在matchID字段中检查id是否存在于userPredictions中,如果存在,则返回UpcomingMatch组件以及来自userPredictions的附加信息,即TeamAScore和teamBScore。如果不是,那么就从upcmgMatches返回信息,这些信息应该是相同的,但没有预测分数。

EN

回答 1

Stack Overflow用户

发布于 2018-09-26 01:15:08

您可以使用Object.keys()获取外部对象键

const getFirstKey = o => Object.keys(o)[0]

const getMatchIds = matches => matches.map(getFirstKey)

然后,您可以对照它检查userPredictions的列表。

const isUserMatch = matchKey =>
  getMatchIds(userPredictions)
    .includes(matchKey)

const upcomingUserMatches = upcomingMatches
  .map(getFirstKey)
  .filter(isUserMatch)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52501633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档