javascript - 基于嵌套属性过滤数组

标签 javascript arrays

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

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

相关文章:

javascript - 使用 JavaScript 将 Xml 转换为 HTML5

javascript - 将一个数组中的值插入多维数组并出现错误

php - laravel 如何访问表的编号名称的列?

c - 如何在 C 中扩展二维动态数组?

javascript - 无论我点击什么位置,都在 Google map 上添加标记

javascript - 显示 div onscroll 但永久隐藏 div onclick

javascript - 如何在表单提交时创建新页面?

javascript - 如何触发 Bootstrap Carousel 的 carousel-indicators

c++ - C - 枚举索引数组的优点/缺点

php - 将带有媒体查询和其他最终情况的 css 解析为 php 数组