【问题标题】:Replace JSON node values with one of their specific child node value - node JS [closed]将 JSON 节点值替换为其特定子节点值之一 - 节点 JS [关闭]
【发布时间】:2021-09-22 18:45:58
【问题描述】:

我有这个 JSON 对象,我想将所有 'title' 和 'description' 对象替换为 title.es 和 description.es 子值,有点像这样: item.title = item.title.es 你能帮我找到正确的递归算法吗? 我尝试使用递归函数,但没有成功。

[
  {
    "name": "aaa",
    "title": {
      "es": "dfghfdghgfhgfh",
      "en": "hjklhjkljkhljkhlklj"
    },
    "services": [
      {
        "name": "aaa-1",
        "title": {
          "es": "dfgdfgsdfg",
          "en": "dfghfgdhgfhgfhgf"
        },
        "services": [
          {
            "name": "aaa-1-1",
            "title": {
              "es": "dfghgfhfghgfdh",
              "en": "dfghfgdhfgdhgfdh"
            }
            "description": {
              "es": "sdfgfdsgfdg",
              "en": "sertztrezrteztre"
            }
          }
        ]
      },
      {
        "name": "aaa-2",
        "title": {
          "es": "ertzrtez",
          "en": "ertuztzutzuztuzt"
        }
      },
    ]
  },
  {
    "name": "bbb",
    "title": {
      "es": "sdfsdfdsf",
      "en": "sdfsdfdsfdsfdsf"
    },
    "services": [
      {
        "name": "bbb-1",
        "title": {
          "es": "sdfsdfdsfdsf",
          "en": "sdfdsfdsfds"
        },
        "services": [
          {
            "name": "bbb-1-1",
            "title": {
              "es": "werwerewrewr",
              "en": "werwerwerwerew"
            }
          },
          {
            "name": "bbb-1-2",
            "title": {
              "es": "werewrewrwerewr",
              "en": "werewrewrewrwerwerwerwerewr"
            }
          }
        ]
      }
    ]
  }
]

【问题讨论】:

  • 欢迎来到 SO! “我尝试使用递归函数,但没有奏效”——你能分享一下尝试吗?谢谢。

标签: node.js json express recursion


【解决方案1】:

这应该可以解决递归函数的问题:


function iter(o) {
  Object.keys(o).forEach((k) => {
    console.log(k);
    if (k === 'title' || k === 'description') {
      console.log(o[k]);
      o[k] = o[k].en;
      return;
    }
    if (o[k] !== null && typeof o[k] === 'object') {
      iter(o[k]);
    }
  });
}
iter(obj);

这是修改后的版本:another SO answer :)

【讨论】:

  • 解析错误:意外令牌:
  • 能否请您先更新您的问题以发布您尝试过的解决方案?
猜你喜欢
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
相关资源
最近更新 更多