基于嵌套属性的过滤数组 [英] Filtering array based on nested property

查看:47
本文介绍了基于嵌套属性的过滤数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个对象数组,其中有一个嵌套参数,我只想返回那些通过基于该嵌套参数的过滤器的数组元素,而该嵌套参数又是一个对象数组.

I have an array of objects which has a nested parameter in it and I want to return only those array elements that pass filter based on that nested parameter which is in turn also an array of objects.

[{q:1,w:2,props:{p:1, messages:[{status:true},{status:false},{status:true}]},
{q:3,w:5,props:{p:2, messages:[{status:false},{status:false},{status:false}]},
{q:7,w:0,props:{p:3, messages:[{status:false},{status:false},{status:true}]}
]

我的目的是仅过滤那些至少包含一条状态为true的消息的对象.在这个例子中,我希望得到两个对象的数组

My aim is to filter only those objects that contain at least one message with status true. In this example I would expect to get an array of two objects

[{q:1,w:2,props:{p:1, messages:[{status:true},{status:false},{status:true}]},
{q:7,w:0,props:{p:3, messages:[{status:false},{status:false},{status:true}]}
]

感谢您的帮助和建议!

推荐答案

some() 将让您至少检查一次条件是否为真.您可以使用它进行过滤:过滤器

let arr = [{q:1,w:2,props:{p:1, messages:[{status:true},{status:false},{status:true}]}},{q:3,w:5,props:{p:2, messages:[{status:false},{status:false},{status:false}]}},{q:7,w:0,props:{p:3, messages:[{status:false},{status:false},{status:true}]}}]

let filtered = arr.filter(item => item.props.messages.some(m => m.status === true))
console.log(filtered)

这篇关于基于嵌套属性的过滤数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆