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

如何修改JS代码,移除对象数组中连续同type超2的对象并收集移除项

处理连续重复对象的数组过滤需求

需求描述

需要对对象数组完成以下处理:

  • 移除所有type属性相同且连续出现数量超过2个的对象
  • 被移除的对象需单独收集到一个数组中

示例

原始数组:

[
  {
    type: 'joined',
    name: 'test',
  },
  {
    type: 'joined',
    name: 'test 1',
  },
  {
    type: 'left',
    name: 'test 2',
  },
  {
    type: 'joined',
    name: 'test 3',
  },
  {
    type: 'joined',
    name: 'test 4',
  },
  {
    type: 'joined',
    name: 'test 5',
  },
  {
    type: 'joined',
    name: 'test 6',
  },
  {
    type: 'joined',
    name: 'test 7',
  }
]

处理后保留的数组:

[
  {
    type: 'joined',
    name: 'test',
  },
  {
    type: 'joined',
    name: 'test 1',
  },
  {
    type: 'left',
    name: 'test 2',
  }
]

被移除的数组:

[
  { type: 'joined', name: 'test 3' },
  { type: 'joined', name: 'test 4' },
  { type: 'joined', name: 'test 5' },
  { type: 'joined', name: 'test 6' },
  { type: 'joined', name: 'test 7' }
]

修改参考代码实现需求

你提供的代码已经完成了连续同类型对象的分组,只需要在分组后增加阈值判断,即可实现需求:

const originalArray = [
  { type: 'joined', name: 'test' },
  { type: 'joined', name: 'test 1' },
  { type: 'left', name: 'test 2' },
  { type: 'joined', name: 'test 3' },
  { type: 'joined', name: 'test 4' },
  { type: 'joined', name: 'test 5' },
  { type: 'joined', name: 'test 6' },
  { type: 'joined', name: 'test 7' }
];

let currentType;
let groupedItems = [];
// 第一步:完成连续同type对象的分组
for (const item of originalArray) {
  if (item.type !== currentType) {
    groupedItems.push([]);
    currentType = item.type;
  }
  groupedItems[groupedItems.length - 1].push(item);
}

// 第二步:根据阈值过滤分组,分离保留和移除的对象
const keptArray = [];
const removedArray = [];
const MAX_ALLOWED = 2; // 允许的最大连续数量

for (const group of groupedItems) {
  if (group.length > MAX_ALLOWED) {
    removedArray.push(...group);
  } else {
    keptArray.push(...group);
  }
}

console.log('保留的数组:', keptArray);
console.log('被移除的数组:', removedArray);

代码说明

  1. 分组阶段:沿用你提供的逻辑,将连续同type的对象归为一组
  2. 过滤阶段:遍历每个分组:
    • 若分组长度超过2,将整个分组对象移入移除数组
    • 若分组长度≤2,将整个分组对象移入保留数组
  3. 如需调整允许的连续数量,直接修改MAX_ALLOWED的值即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:20:36