【问题标题】:How to filter inside a filter in react如何在反应中过滤内部过滤器
【发布时间】:2021-05-08 00:37:44
【问题描述】:

我正在尝试通过一个数组进行过滤,该数组向我显示还没有团队的用户列表,另一个是他们有一个团队但没有我传入的特定团队 ID。

例如当我console.log(invitees):

0:
Memberships: Array(1)
0: {teamId: "5413e75f-ff12-4b7a-a3fe-f892cd006366"}
length: 1
__proto__: Array(0)
Ratings: []
Skills: []
fullname: "Nhan Nguyen"

1:
Memberships: Array(0)
length: 0
__proto__: Array(0)
Ratings: []
Skills: [{…}]
fullname: "nick nick"

2:
Memberships: Array(2)
0: {teamId: "4d45c102-0624-4467-ad11-5fa5eaadcf7e"}
1: {teamId: "5413e75f-ff12-4b7a-a3fe-f892cd006366"}
length: 2
__proto__: Array(0)
Ratings: []
Skills: []
fullname: "Nhan Nguyen"

所以现在我在 teamId 4d4... 中,当我尝试搜索尚未加入团队的用户或已加入团队但未加入团队且 ID 为 4d4... 的用户时

我怎样才能循环过去?

这是我的以下代码:

{invitees
  .filter(
    (userTeamId) =>
      userTeamId.Memberships.length < 1 ||
      userTeamId.Memberships.filter((member) =>
        member.temaId !== privateTeamId
      )
  )
  .map((user, index) => (
    <Grid item key={index}>
      <InviteCard tab={tab} user={user} />
    </Grid>
  ))}

【问题讨论】:

    标签: reactjs for-loop filter


    【解决方案1】:

    数组上的filter 函数期望传入的谓词函数返回真或假结果,然后对filter 的调用返回一个包含过滤后值的数组。

    内部filter 并不是您真正想要完成的,因为您需要返回一个布尔值,而不是一个数组。您只想确定成员列表中的每个值是否与您的私人团队 ID 不匹配。为此,您可以在数组上使用every 函数:

    {invitees
      .filter(
        (userTeamId) =>
          userTeamId.Memberships.length < 1 ||
          userTeamId.Memberships.every((member) =>
            member.teamId !== privateTeamId
          )
      )
      .map((user, index) => (
        <Grid item key={index}>
          <InviteCard tab={tab} user={user} />
        </Grid>
      ))}
    

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多