繁体   English   中英

如何在 javascript 中过滤 object 的嵌套数组?

[英]How do I filter a nested array of object in javascript?

如何获得来自不同俱乐部的所有足球队? 数组结构:俱乐部数组>每个俱乐部有多个球队>每个球队有许多事件(比赛)。

我的目标是使用运动属性 ==“足球”过滤每个俱乐部的所有球队对象。

 [{ _id: "afsajjenfjnjngiessnagkl", logo: "picture.jpeg", name: "Club1", teams:[ { _id: "akjjkngho3nkjk232kl2ml24", sport: "football", events: [ { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Football Club", }, { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Club", }, ] }, { _id: "akjjktfsho3gag232kl2ml24", sport: "Wrestling", events: [ { _id: "nafhjnkns3jn4s2nkjn2b4kjkn", opponent: "Other Club", }, { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Club", }, ] }, ] }, { _id: "afsajjenfjnjngienagkl", logo: "picture.jpeg", name: "Club2", teams:[ { _id: "akjjkngho3nkjk232kl2ml24", sport: "football", events: [ { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Football Club", }, { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Club", }, ] }, { _id: "akjjktfsho3gag232kl2ml24", sport: "Wrestling", events: [ { _id: "nafhjnkns3jn4s2nkjn2b4kjkn", opponent: "Other Club", }, { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Club", }, ] }, ] }, ]

期望的结果:只过滤来自不同俱乐部的足球队。

 [{ _id: "afsajjenfjnjngiengaagkl", logo: "picture.jpeg", name: "Club1", teams:[ { _id: "akjjkngho3nkjk232kl2ml24", sport: "football", events: [ { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Football Club", }, { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Club", }, ] }, ] }, { _id: "afsajjenfjnjngienagkl", logo: "picture.jpeg", name: "Club2", teams:[ { _id: "akjjkngho3nkjk232kl2ml24", sport: "football", events: [ { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Football Club", }, { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Club", }, ] }, ] }, ]

一种方法是这样 ->

arr.map((club) => {
club.teams.map((team) => {
  if (team.sport == 'football') {
    console.log(team) // Your logic here...
  }
})

})

您基本上必须 map 初始数组才能获取其中的各个对象。

然后你只需要 map 的“teams”属性,它也是一个数组,它包含你正在寻找的“sport”值,从那里开始它是一个简单的验证来检查球队是否匹配“足球”。

Output:

在此处输入图像描述

你这样做是为了代表足球进行过滤。

 const arr = [ { _id: "afsajjenfjnjngiessnagkl", logo: "picture.jpeg", name: "Club1", teams:[ { _id: "akjjkngho3nkjk232kl2ml24", sport: "football", events: [ { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Football Club", }, { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Club", }, ] }, { _id: "akjjktfsho3gag232kl2ml24", sport: "Wrestling", events: [ { _id: "nafhjnkns3jn4s2nkjn2b4kjkn", opponent: "Other Club", }, { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Club", }, ] }, ] }, { _id: "afsajjenfjnjngienagkl", logo: "picture.jpeg", name: "Club2", teams:[ { _id: "akjjkngho3nkjk232kl2ml24", sport: "football", events: [ { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Football Club", }, { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Club", }, ] }, { _id: "akjjktfsho3gag232kl2ml24", sport: "Wrestling", events: [ { _id: "nafhjnkns3jn4s2nkjn2b4kjkn", opponent: "Other Club", }, { _id: "nafkjnkn23jn4j2nkjn2b4kjkn", opponent: "Other Club", }, ] }, ] }, ] let footbal = []; arr.forEach((a) => { a.teams.forEach((b) => { if (b.sport === 'football') { console.log('true') footbal.push(b) } else { console.log('false') } }) /* footbal = a.teams.filter((c) => c.sport === 'football') */ }) console.log(footbal)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM