You need to enable JavaScript to run this app. 如何在嵌套JSON中根据指定键值查找并删除目标对象
优惠活动
大模型
产品
解决方案
定价
更多

如何在嵌套JSON中根据指定键值查找并删除目标对象

嵌套JSON数组指定条目删除实现方案

实现目标

在保持原JSON对象所有顶层字段完全不变的前提下,从subjects数组中删除key属性值为mat的对应条目,适配数组内存在数十个对象的常规业务场景。

可选实现方案

  • 通用业务场景优先:使用数组filter方法过滤
    这是最无副作用的实现方式,逻辑清晰,无需手写复杂循环,即使数组条目量较大也能满足性能要求:

    // 直接过滤掉key为mat的条目,生成新的subjects数组
    obj.subjects = obj.subjects.filter(item => item.key !== 'mat')
    

    如果是需要保持原对象引用不变(比如前端状态管理的不可变更新场景),可以用对象展开语法生成全新对象,不会触发原对象的属性劫持监听异常:

    const updatedObj = {
      ...obj,
      // 仅替换subjects字段为过滤后的结果,其余字段完全继承原对象
      subjects: obj.subjects.filter(item => item.key !== 'mat')
    }
    
  • 超大数组场景:用索引定位后精准删除
    当subjects数组条目量达到千级以上,全量遍历过滤的性能会有小幅损耗,此时可以用findIndex先定位匹配条目的位置,再执行精准删除:

    // 定位匹配条目的索引
    const targetIndex = obj.subjects.findIndex(item => item.key === 'mat')
    // 仅在找到匹配条目时执行删除,避免无意义操作
    if (targetIndex !== -1) {
      obj.subjects.splice(targetIndex, 1)
    }
    

方案效果

两种实现方式最终输出的结构都和要求的目标结构完全一致:subjects数组内仅保留key为eng的英语科目条目,其余id、name、level、homeroom_teacher等顶层字段全程不做任何改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 06:54:03