wanxinwl 2022-05-15 22:50 采纳率: 0%
浏览 80
已结题

将js数组对象转换为三级联动数据格式并去重排序

原数据格式:

const data = [
        {
          sgbh: "20200701003",
          qywz: "分离器1",
          ch: "1",
          cwmc: "T2l4雷四段",
        },
        {
          sgbh: "20200701003",
          qywz: "分离器1",
          ch: "1",
          cwmc: "T2l4雷三段",
        },
        {
          sgbh: "20200701003",
          qywz: "分离器3",
          ch: "2",
          cwmc: "T2l4雷四段",
        },
      ]

处理后数据格式:

[
        {
          value: '分离器1',
          label: '分离器1',
          children: [
            {
              value: '1',
              label: '1',
              children: [
                {
                  value: 'T2l4雷三段', 
                  label: 'T2l4雷三段'
                },
                {
                  value: 'T2l4雷四段', 
                  label: 'T2l4雷四段'
                }
              ]
            }
          ]
        },
        {
          value: '分离器3', 
          label: '分离器3', 
          children: [
            {
              value: '2',
              label: '2',
              children: [
                {
                  value: 'T2l4雷四段', 
                  label: 'T2l4雷四段'
                }
              ]
            }
          ]
        }
      ]
  • 写回答

5条回答 默认 最新

  • Heerey525 前端领域新星创作者 2022-05-16 10:03
    关注
    获得1.35元问题酬金
    
    <!DOCTYPE html>
    <html lang="en">
    
        <head>
            <meta charset='utf-8'>
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Document</title>
        </head>
    
        <body>
            <script>
                const data = [
                    {
                        sgbh: "20200701003",
                        qywz: "分离器1",
                        ch: "1",
                        cwmc: "T2l4雷四段",
                    },
                    {
                        sgbh: "20200701003",
                        qywz: "分离器1",
                        ch: "1",
                        cwmc: "T2l4雷三段",
                    },
                    {
                        sgbh: "20200701003",
                        qywz: "分离器3",
                        ch: "2",
                        cwmc: "T2l4雷四段",
                    },
                ]
    
                const getDelData = (arr) => {
                    let map = new Map()
                    for (let item of arr) {
                        const temp = item.qywz
                        if (!map.has(temp)) {
                            const children = [
                                {
                                    value: item.ch,
                                    label: item.ch,
                                    children: [
                                        {
                                            value: item.cwmc,
                                            label: item.cwmc
                                        }
                                    ]
                                }
                            ]
                            const obj = {
                                value: item.qywz,
                                label: item.qywz,
                                children
                            }
                            map.set(temp, obj)
                        } else {
                            const _this = map.get(temp)
                            for (let i = 0; i < _this.children.length; i++) {
                                if (item.ch == _this.children[i].value) {
                                    for (let j = 0; j < _this.children[i].children.length; j++) {
                                        if (item.cwmc == _this.children[i].children[j].value) {
                                            break
                                        } else {
                                            _this.children[i].children.push({
                                                value: item.cwmc,
                                                label: item.cwmc
                                            })
                                        }
                                    }
                                }
                            }
                            map.set(temp, _this)
                        }
                    }
                    return [...map.values()]
                }
    
                console.log('arr', getDelData(data))
            </script>
    
        </body>
    
    </html>
    
    评论

报告相同问题?

问题事件

  • 系统已结题 5月23日
  • 修改了问题 5月15日
  • 赞助了问题酬金5元 5月15日
  • 创建了问题 5月15日

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费