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

如何修改JS函数实现JSON中指定字符串的替换?

解决JSON对象中所有title字段的字符串替换问题

修改后的函数实现

function replaceValueOfJson(obj) {
  for (const key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      const value = obj[key];
      // 递归处理嵌套对象
      if (typeof value === 'object' && value !== null) {
        replaceValueOfJson(value);
      }
      // 遍历数组元素并递归处理
      else if (Array.isArray(value)) {
        value.forEach(item => replaceValueOfJson(item));
      }
      // 匹配title字段,执行字符串替换
      else if (key === 'title' && typeof value === 'string') {
        obj[key] = value.replace(/11111/g, '<').replace(/22222/g, '>');
      }
    }
  }
  return obj;
}

核心逻辑说明

  • 递归遍历JSON的所有层级结构,包括嵌套对象和数组,确保所有title字段都被处理
  • 仅针对title字段的字符串值执行全局替换:
    • 把所有11111替换为<
    • 把所有22222替换为>
  • 保留原JSON的结构与非目标字段的内容不变

使用示例

输入JSON

const input = {
  "title": "11111测试22222文本",
  "menu": [
    {
      "title": "菜单11111项22222",
      "id": 1
    },
    {
      "subMenu": {
        "title": "子菜单11111标题22222",
        "url": "/"
      }
    }
  ]
};

执行后输出

{
  "title": "<测试>文本",
  "menu": [
    {
      "title": "菜单<项>",
      "id": 1
    },
    {
      "subMenu": {
        "title": "子菜单<标题>",
        "url": "/"
      }
    }
  ]
}

原函数常见问题排查

原函数无法达成目标通常是以下原因:

  • 未递归处理嵌套的对象或数组,仅修改了第一层的title字段
  • 替换时未使用全局匹配(未加g修饰符),仅替换了第一个匹配的字符串
  • 未判断字段值的类型,导致非字符串类型的title字段出现错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:07:41