我有一个对象数组,其中有一个嵌套参数,我只想返回那些通过基于该嵌套参数的过滤器的数组元素,而该嵌套参数又是一个对象数组。
[{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()
会让您至少检查一次条件是否为真。您可以使用它来过滤:filter
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)
关于javascript - 基于嵌套属性过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51565185/