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

如何根据指定ID数组移除JSON对象数组中的匹配元素

实现方案

核心逻辑是遍历问题条目列表,剔除ID在待移除ID列表中的项,生产环境推荐优先用无副作用的过滤写法,避免直接修改原数组引发不可预期的问题。

推荐写法(不修改原数组,性能最优)

利用Array.filter生成新的符合要求的数组,提前将待删除ID数组转为Set结构,把ID查询的时间复杂度从O(n)降到O(1),数据量较大时性能提升明显:

// 构建待删除ID的集合
const targetDeleteIds = new Set(idArray);
// 过滤保留不在删除集合内的条目
const remainIssues = issues.filter(issue => !targetDeleteIds.has(issue.id));

执行后remainIssues就是移除了目标ID条目的新数组,原始issues数组不会被改动,适合绝大多数前端业务场景。

原数组修改写法

如果业务要求必须直接修改原始issues数组(不推荐,容易产生隐式副作用),采用倒序遍历+splice的方式删除,避免正序删除时数组索引前移导致的漏删问题:

const targetDeleteIds = new Set(idArray);
// 从数组末尾往前遍历
for (let i = issues.length - 1; i >= 0; i--) {
  if (targetDeleteIds.has(issues[i].id)) {
    issues.splice(i, 1);
  }
}

执行后原issues数组内匹配ID的条目会被直接删除。

结果验证

两种写法执行完成后,剩余的条目ID为:

  • 3d90afa1-bbbe-4640-bf91-38b27f72279a
  • a926ce55-79a3-4d38-923b-59b92cb2164a
  • dc137785-c283-4e54-a8c9-176e80d07b97
    idArray中存储的两个ID对应的条目已被完全移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:09:18