代码之家  ›  专栏  ›  技术社区  ›  Keerthi Reddy Yeruva

在typescript中合并具有相同值的JSON数据

  •  0
  • Keerthi Reddy Yeruva  · 技术社区  · 7 年前

    我有一个JSON数据,是从URL获取的。我想合并 相同的值 以下是示例数据。我在网上搜索过,但没有找到解决办法。我找到的只是 相同的键 .

      [ {
        "banana": [
          {
            "color": yellow,
            "size": "small"
          },
          {
            "size": "medium"
          },
          {
            "size": "large"
          }
        ],
        "process_name": "fruits"},{
        "carnivores": [
          {
            "name": "lion"
          },
          {
            "name": "tiger"
          },
          {
            "name": "chetah"
          },
          {
            "name": "dianosaur"
          }
        ],
        "process_name": "animal"}, {
        "apple": [
          {
            "color": red,
            "size": "large"
          }
        ],
        "process_name": "fruits"}]
    

    我想合并 "process_name" :"fruits" 在下面的一个数组中,结果应该是

    [{
    "banana": [
      {
        "color": yellow,
        "size": "small"
      },
      {
        "size": "medium"
      },
      {
        "size": "large"
      }
    ],
    "apple": [
      {
        "color": red,
        "size": "large"
      }
    ],
    "process_name": "fruits"  }, {
    "carnivores": [
      {
        "name": "lion"
      },
      {
        "name": "tiger"
      },
      {
        "name": "chetah"
      },
      {
        "name": "dianosaur"
      }
    ],
    "process_name": "animal"}]
    

    有人能帮忙吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Cerberus    7 年前

    // data definition
    const json_before = [ {
      "banana": [
        {
          "color": "yellow",
          "size": "small"
        },
        {
          "size": "medium"
        },
        {
          "size": "large"
        }
      ],
      "process_name": "fruits"},
    {
      "carnivores": [
        {
          "name": "lion"
        },
        {
          "name": "tiger"
        },
        {
          "name": "chetah"
        },
        {
          "name": "dianosaur"
        }
      ],
      "process_name": "animal"},
    {
      "apple": [
        {
          "color": "red",
          "size": "large"
        }
      ],
      "process_name": "fruits"
    }];
    
    // processing
    const json_after = json_before.reduce((arr, next) => {
      const exist = arr.find(el => el.process_name === next.process_name);
      if (exist) Object.assign(exist, next);
      else arr.push(next);
      return arr;
    }, []);
    
    // check
    console.log(json_after);

    reduce Object.assign Object.keys

    console.log(json_before)

    推荐文章