繁体   English   中英

基于嵌套属性的过滤数组

[英]Filtering array based on nested property

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

[{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的消息的对象。 在这个例子中,我希望得到两个对象的数组

[{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) 

使用过滤器。

var result= items.filter(item =>{
    return item.props.messages.some(obj => obj.status === true)
})

我创建了这个小提琴: http : //jsfiddle.net/81ue32ra/2/

 var items = [{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}]}} ]; var result = items.filter(item =>{ return item.props.messages.some(obj => obj.status === true) }); console.log(result); 

只需filter主数组,然后检查some消息的status属性是否为true。

让数据=您的数组;

data.filter(obj => obj.props.messages.some(message => message.status).length > 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM