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

如何过滤嵌套对象数组 移除closedRequest中指定ID的元素

问题原因

你的代码没生效是两个核心问题:

  • Array.filter() 不会修改原数组,执行后会返回一个过滤完成的新数组。你之前的代码只是调用了filter拿到结果,但没有把结果赋值回原字段,所以原数据不会有任何变化。
  • 字段名不匹配:你给出的示例数据里字段是closedRequest(单数)、子项id字段是id,但你写的代码里用了closedRequests(复数)、cr.requestID做判断,字段名写错也会导致逻辑失效。
实现代码

如果你要保留原有对象结构、直接修改原对象的closedRequest字段,用下面的写法即可:

// 替换成你要删除的目标id,比如示例里要删id=3就填3
const removeId = 3;

client.contracts.forEach(c => {
  // 请根据实际数据核对字段名:closedRequest/closedRequests、id/requestID
  c.closedRequest = c.closedRequest.filter(cr => cr.id !== removeId);
});

执行完成后原client.contracts的结构就和你预期的结果一致。

如果你不想修改原始数据、需要生成无副作用的全新过滤后副本,可以用map实现:

const removeId = 3;
const filteredResult = {
  contracts: client.contracts.map(c => ({
    ...c,
    closedRequest: c.closedRequest.filter(cr => cr.id !== removeId)
  }))
};

提示:运行前务必核对字段名和你实际业务数据一致,避免因为字段拼写错误导致过滤不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:01:00