Javascript-多个嵌套的过滤器表达式

在JavaScript中具有来自API的JSON对象:

[
  {
    "id": 1,
    "label": "Breakfast",
    "subCategories": [
      {
        "id": 100,
        "label": "Cereals, Muesli",
        "items": [
          {
            "productId": "4fdddf1d-8d31-411d-a908-5edd68a775b7",
            "label": "Bircher Muesli"
          },
          {
            "productId": "000673e7-47ec-4dce-a940-ad4aacbd7d73",
            "label": "Individual Cereals"
          },
          {
            "productId": "0f739661-5531-4734-9dfd-e145b60667cc",
            "label": "Organic Porridge Oats"
          }
        ]
      },
      {
        "id": 101,
        "label": "Eggs, Omelettes",
        "items": [
          {
            "productId": "6d608133-ab44-4f9d-ab8e-fc6a3f955397",
            "label": "Crushed Avocado with Soughdough Toast"
          },
          {
            "productId": "fcfe91ab-e9b1-4dc0-8c57-ffb9646e0658",
            "label": "Crushed Avocado with Crispy Bacon"
          },
          {
            "productId": "2a80e48b-76f6-4bda-abf3-ec8dc7bf1419",
            "label": "Crushed Avocado with Smoked Salmon"
          },
          {
            "productId": "ae35e949-abf3-4795-a5df-9af4250c2185",
            "label": "Egg White Omelette"
          }
        ]
      }
      ]
  },
  {
    "id": 2,
    "label": "Light Lunch",
    "subCategories": [
      {
        "id": 103,
        "label": "Condiments",
        "items": [
          {
            "productId": "25503a9b-b553-4b56-a152-49e4121cf4ae",
            "label": "Butter"
          },
          {
            "productId": "c1dd9761-f170-4e6a-a7d7-5519a4213874",
            "label": "Jam"
          }
        ]
      },
      {
        "id": 104,
        "label": "Yoghurts",
        "items": [
          {
            "productId": "938fed24-6d4c-e0cd-8303-0fcd42c87be4",
            "label": "Fruit Yoghurt",
          },
          {
            "productId": "62137176-0966-4424-9093-51bd7871d31b",
            "label": "Greek Yoghurt",
          },
          {
            "productId": "307e59c4-b103-43d4-988c-75ee539d5d75",
            "label": "Granola Parfait: Layers of Berries, Fruit Granola, Yoghurt & Honey",
          }
        ]
      }
    ]
  }
]

我需要使用针对item.label属性的搜索查询(例如:Greek)过滤此数组,并使其返回过滤后的结果,如下所示:

[
  {
    "id": 2,
    "label": "Light Lunch",
    "subCategories": [
      {
        "id": 104,
        "label": "Yoghurts",
        "items": [
          {
            "productId": "62137176-0966-4424-9093-51bd7871d31b",
            "label": "Greek Yoghurt",
          }
        ]
      }
    ]
  }
]

我已经尝试过使用带有嵌套some()的filter()的各种实现,如在StackOverflow上看到的那样,但是没有返回期望的结果。目前,此方法有效,但仅顶层类别会被过滤,并且嵌套的子类别仅在项目匹配时才存在。

var searchQuery="Greek";
var data=[]; //JSON omitted for brevity.
var result = data.filter(a=>{
    return a.subCategories.some(b=> {
        return b.items.some(c=> new RegExp(searchQuery,"i").test(c.label));
    });
});

任何帮助将不胜感激。