You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何过滤benefitGroups,仅保留含coverageLineIds=1的benefits的组?

如何过滤benefitGroups数组,保留包含coverageLineId=1的组

我有一个名为benefitGroups的数组,每个元素包含benefits集合,每个benefit项都有coverageLineIds数组。需要过滤这个数组,只保留那些benefits中至少有一项的coverageLineIds包含ID 1的组。

代码示例

const benefitGroups = [
     {
      id: 1,
      name: "Benefit Group A",
      benefits: [
         {
         id: 1,
         benefitGroupId: 1,
         name: "Benefit Z",
         coverageLineIds: [1, 2]
         },
         {
         id: 2,
         benefitGroupId: 1,
         name: "Benefit X",
         coverageLineIds: [1, 2]
         },
         {
         id: 3,
         benefitGroupId: 1,
         name: "Benefit Y",
         coverageLineIds: [1, 2]
         },
      ],
    },
     {
      id: 2,
      name: "Benefit Group B",
      benefits: [
         {
         id: 4,
         benefitGroupId: 2,
         name: "Benefit I",
         coverageLineIds: [1]
         },
         {
         id: 5,
         benefitGroupId: 2,
         name: "Benefit J",
         coverageLineIds: [1]
         },
         {
         id: 6,
         benefitGroupId: 2,
         name: "Benefit H",
         coverageLineIds: [1]
         },
      ],
    },
     {
      id: 3,
      name: "Benefit Group C",
      benefits: [
         {
         id: 7,
         benefitGroupId: 3,
         name: "Benefit D",
         coverageLineIds: [3, 4]
         },
         {
         id: 8,
         benefitGroupId: 3,
         name: "Benefit E",
         coverageLineIds: [3, 4]
         },
         {
         id: 9,
         benefitGroupId: 3,
         name: "Benefit F",
         coverageLineIds: [3, 4]
         },
      ],
    },
];

解决方案

可以通过数组的filter()和some()方法组合实现,配合includes()检查ID是否存在:

const filteredGroups = benefitGroups.filter(group => 
  group.benefits.some(benefit => benefit.coverageLineIds.includes(1))
);

代码解释

  • filter():遍历benefitGroups数组,仅保留返回true的元素
  • some():检查当前组的benefits集合中,是否至少有一个benefit满足条件
  • includes(1):判断当前benefit的coverageLineIds数组中是否包含ID 1

结果说明

在示例代码中,filteredGroups会返回Benefit Group A和Benefit Group B——它们的benefits里都存在coverageLineIds包含1的项;而Benefit Group C的所有benefit的coverageLineIds都不含1,会被过滤掉。

内容的提问来源于stack exchange,提问作者noclist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:36:32