2017-03-03 52 views
2

我試圖篩選基於孩子值一個json:let's說:的Javascript JSON過濾深的孩子

[ 
    { 
     "Date": "2017-03-02T00:00:00", 
     "Matches": [ 
      { 
       "Id": 67, 
       "NameSeo": "teste-02-33", 
       "IsLive": true 
      }, 
      { 
       "Id": 63, 
       "NameSeo": "teste-ao-vivo-always", 
       "IsLive": true 
      } 
     ] 
    }, 
    { 
     "Date": "2017-03-13T00:00:00", 
     "Matches": [ 
      { 
       "Id": 64, 
       "NameSeo": "san-avai-13-03-17-13-00-caninde", 
       "IsLive": false 
      }, 
      { 
       "Id": 66, 
       "NameSeo": "teste-01-xxx", 
       "IsLive": false 
      } 
     ] 
    }, 
    { 
     "Date": "2017-03-23T00:00:00", 
     "Matches": [ 
      { 
       "Id": 65, 
       "NameSeo": "gre-cor-23-03-17-17-30-pacaembu", 
       "IsLive": false 
      } 
     ] 
    } 
] 

我怎麼能算「匹配」與「將isLive」 =真?在這個例子中會是2.會有2個現場比賽的1日期(但我不在乎日期,只是我有2場比賽現場)。

越接近我能得到的是:

x.filter(x => x.Matches.filter(w => w.IsLive)).length 

但在這裏它返回3,我猜是所有的日期。

x.filter(x => x.Matches.IsLive).length 

這將返回0

+0

'x.filter(X => x.Matches.filter(W => w.IsLive))length'不因爲'x.Matches.filter(w => w.IsLive)'總是返回一個數組,如果你在外部'filter'中返回它,它總會被認爲是真的。這就是爲什麼所有3個對象都計入結果中的原因。 – Xufox

+0

這是一個我忘了放的問題,現在我明白它爲什麼會返回3 ..謝謝。 – 2Fast4YouBR

回答

1

嘗試:

x.reduce((count, item) => count + item.Matches.filter(w => w.IsLive).length, 0)