【发布时间】:2017-03-03 21:49:22
【问题描述】:
我正在尝试根据子值过滤 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" = true 的 "Matches" ?在此示例中为 2。将是 1 个日期,有 2 场现场比赛(但我不关心日期,只是我有 2 场现场比赛)。
我能得到的更接近的是:
x.filter(x => x.Matches.filter(w => w.IsLive)).length
但这里它返回 3,我猜是所有日期。
x.filter(x => x.Matches.IsLive).length
这会返回 0
【问题讨论】:
-
x.filter(x => x.Matches.filter(w => w.IsLive)).length不起作用,因为x.Matches.filter(w => w.IsLive)总是返回一个数组,如果你在外部filter中返回它,它总是被认为是真实的。这就是结果中计算所有 3 个对象的原因。 -
那是我忘记提出的问题,现在我明白为什么它返回 3.. 谢谢。
标签: javascript arrays json filter