簡體   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