打字稿中的嵌套过滤器
我有一个 JSON 数组,如下所示。
[
{
id: 1,
name: 'Alex',
activity: [
{
id: 'A1',
status: true
},
{
id: 'A2',
status: true
},
{
id: 'A3',
status: false
}
]
},
{
id: 2,
name: 'John',
activity: [
{
id: 'A6',
status: true
},
{
id: 'A8',
status: false
},
{
id: 'A7',
status: false
}
]
}
]
我想要获取一个状态为 true 的活动 id 数组。我可以使用nester for
或 forEach
循环来实现这一点。但在这里,我希望借助 filter
、map
和 some
等数组函数来实现。
我已经尝试过以下操作。
let newArr=arr.filter(a=> a.activity.filter(b=> b.status).map(c=> c.id))
但我没有得到正确答案 预期输出
['A1','A2','A6']
I have a JSON array, which looks as follows.
[
{
id: 1,
name: 'Alex',
activity: [
{
id: 'A1',
status: true
},
{
id: 'A2',
status: true
},
{
id: 'A3',
status: false
}
]
},
{
id: 2,
name: 'John',
activity: [
{
id: 'A6',
status: true
},
{
id: 'A8',
status: false
},
{
id: 'A7',
status: false
}
]
}
]
I want to get an array of activity id whose status should be true.I can achieve this with nester for
or forEach
loop. But here I am looking to achieve with the help of array functions like filter
, map
, and some
.
I have already tried with the following.
let newArr=arr.filter(a=> a.activity.filter(b=> b.status).map(c=> c.id))
But I didn't get the correct answer
Expected output
['A1','A2','A6']
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
插图
所见即所得
=>所见即所得
Illustration
WYSIWYG
=>WHAT YOU SHOW IS WHAT YOU GET
我在使用
flat()
和flatMap()
时出错。因此,我使用了reduce()
。I got error when using
flat()
andflatMap()
.So, I have usedreduce()
.