Node.js中如何删除JSON对象内符合指定条件的嵌套子对象
实现方法
你可以用数组的filter方法完成过滤需求,以下是两种常用实现方案:
方案1:不修改原对象,生成新的过滤后对象
这种方式不会改动原始JSON数据,适合需要保留原数据的场景:
const filteredJson = { ...jsonObj, clips: jsonObj.clips.map(clip => ({ ...clip, layers: clip.layers.filter(layer => layer.path !== '***vendor**logo*0') })) };
方案2:直接修改原对象
如果可以直接改动原JSON对象,直接遍历修改每一层的layers属性即可:
jsonObj.clips.forEach(clip => { // 过滤掉符合条件的layer,直接覆盖原layers数组 clip.layers = clip.layers.filter(layer => layer.path !== '***vendor**logo*0'); });
补充说明
你原有代码里使用map方法是不合适的,map主要用来对数组元素做映射转换返回新数组,做过滤逻辑直接用filter更符合语义也更简洁。另外你原有内层map的参数声明存在语法错误,少了参数的闭合括号,实际运行会报错。
内容的提问来源于stack exchange,提问作者Süleyman Ali Akpınar
相关产品推荐
相关产品推荐

