簡體   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