簡體   English   中英

過濾JS中另一個數組內的對象數組

[英]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應該工作正常。 我唯一能看到的改進就是使用mapdestructuring 這樣,您可以將其直接分配給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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM