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

JS根据指定ID数组删除对象内各数组的匹配元素实现方法

实现方法

核心处理逻辑分3步:

  • 先把待删除的ID数组转为Set结构,把ID查询的时间复杂度从O(n)降到O(1),数据量较大时性能优势明显
  • 遍历clientData的所有分组键,对每个分组下的条目数组做过滤
  • 过滤规则为仅保留ID不在待删除集合中的条目,直接更新对应分组的数组即可,不需要改动原对象的顶层键结构

完整可运行代码示例:

// 原始clientData数据
const clientData = {
  1111: [
    {ID: 112, name: 'John', age: 23},
    {ID: 113, name: 'Doe', age: 21},
    {ID: 114, name: 'Stan', age: 24},
  ],
  2222: [
    {ID: 222, name: 'Sara', age: 15},
    {ID: 223, name: 'Wiliams', age: 61},
    {ID: 224, name: 'Alan', age: 45},
  ]
}

// 待删除的ID列表
const needDeleteIds = [112, 223, 114]
const deleteIdSet = new Set(needDeleteIds)

// 遍历所有分组执行过滤
Object.keys(clientData).forEach(groupKey => {
  clientData[groupKey] = clientData[groupKey].filter(item => !deleteIdSet.has(item.ID))
})

执行后输出的clientData结构和预期完全一致:

{
  1111: [
    {ID: 113, name: 'Doe', age: 21}
  ],
  2222: [
    {ID: 222, name: 'Sara', age: 15},
    {ID: 224, name: 'Alan', age: 45}
  ]
}

补充说明:上述代码会直接修改原始clientData对象,如果需要保留原数据不被改动,可以先对原对象做深拷贝,在拷贝出的新对象上执行过滤逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:01:05