[英]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.