![](/img/trans.png)
[英]How to filter an array of objects (with arrays inside) with another array of objects
[英]Filter array of objects inside another array in JS
的JavaScript。 具有這樣的結構,即對象數組,每個對象內部都有items
數組
[
{
"title": "Venom",
"items": [
{
"title": "Venom title",
"active": true
},
{
"title": "Venom2",
"active": false
}
]
},
{
"title": "Video",
"items": []
},
{
"title": "Button",
"items": [
{
"title": "Button page",
"active": true
}
]
}
]
我想排除每個元素內具有active: false
屬性的items
,因此排除元素Venom2
{
"title": "Venom2",
"action": "venom2",
"content": "qwertrete5t5t4t5",
"active": false
}
從存在數組。
我用forEach制作並在另一個里面累積數組,這是
let menu = [];
v.forEach((section) => {
menu.push({
title: section.title,
items: section.items.filter(item => item.active)
})
});
然后,我嘗試使用雙濾鏡使其更漂亮,但它不起作用,返回[]
,我基本上猜出了原因...
let menu = v.filter((section) => {
return (section.items.filter(item => item.active === true));
});
也許我的案子有更漂亮的決定(也許帶有減少)?
您的forEach
應該工作正常。 我唯一能看到的改進就是使用map
和destructuring 。 這樣,您可以將其直接分配給menu
如下所示:
const v = [{title:"Venom",items:[{title:"Venom title",active:true},{title:"Venom2",active:false}]},{title:"Video",items:[]},{title:"Button",items:[{title:"Button page",active:true}]}]; let menu = v.map(({title, items}) => ({title, items: items.filter(i => i.active)})) console.log(menu)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.