![](/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.