基于嵌套属性的过滤数组 [英] Filtering array based on nested property
本文介绍了基于嵌套属性的过滤数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个对象数组,其中有一个嵌套参数,我只想返回那些通过基于该嵌套参数的过滤器的数组元素,而该嵌套参数又是一个对象数组.
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屋!
查看全文