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)
关于javascript - 在JS中过滤另一个数组中的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54231120/