MasterHome 2022-10-14 09:08 采纳率: 100%
浏览 63
已结题

json内多数组的相同值合并加入数组,解析成树问题

我想要把一个json数组进行相同值合并分类,自己用循环蒙圈了,通过js或者php操作,该怎么办??

原始数据
[
    {"id":"1000", "name": "监控", "city": "成都", "value": 9},
    {"id":"1001", "name": "手机", "city": "上海", "value": [1,2]},
    {"id":"1002", "name": "电脑", "city": "重庆", "value": 2},
    {"id":"1002", "name": "电脑", "city": "北京", "value": [3,4,8]},
    {"id":"1002", "name": "平板", "city": "杭州", "value": 8}
]
想要得到的数据*
[
  {"id": "1000","tree": [
      {"name": "监控","data": [
          {"city": "成都","value": 9}
        ]
      }
    ]
  },
  {"id": "1001","tree": [
      {"name": "手机","data":[
          {"city": "上海","value": [1,2]}
        ]
      }
    ]
  },
  {"id": "1002",
    "tree": [
      {"name": "电脑",
        "data": [
          {"city": "重庆","value": 2},
          {"city": "北京","value": [3,4,8]}
        ]
      },
      {"name": "平板",
        "data": [
          {"city": "天津","value": 8}
        ]
      }
    ]
  }
]

  • 写回答

1条回答 默认 最新

  • Iam_楠 前端领域新星创作者 2022-10-14 09:41
    关注

    img

    
        const arr = [
          { id: "1000", name: "监控", city: "成都", value: 9 },
          { id: "1001", name: "手机", city: "上海", value: [1, 2] },
          { id: "1002", name: "电脑", city: "重庆", value: 2 },
          { id: "1002", name: "电脑", city: "北京", value: [3, 4, 8] },
          { id: "1002", name: "平板", city: "杭州", value: 8 },
        ];
        let treeArr = [];
        arr.forEach((t) => {
          if (treeArr.length === 0) {
            treeArr.push({
              id: t.id,
              tree: [
                {
                  name: t.name,
                  data: [{ city: t.city, value: t.value }],
                },
              ],
            });
          } else {
            const exist = treeArr.find((x) => x.id === t.id);
            if (!exist) {
              treeArr.push({
                id: t.id,
                tree: [
                  {
                    name: t.name,
                    data: [{ city: t.city, value: t.value }],
                  },
                ],
              });
            } else {
              exist.tree.push({
                name: t.name,
                data: [{ city: t.city, value: t.value }],
              });
            }
          }
        });
        console.log("treeArr", treeArr);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月22日
  • 已采纳回答 10月14日
  • 创建了问题 10月14日

悬赏问题

  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题