把你吃成个大胖子 2022-10-19 11:43 采纳率: 57.4%
浏览 43
已结题

vue数组改造对象形式

              const list = [
                    { fileName: "1.png", nodeId: "bidding-project-apply" ,name:null},
                    { fileName: "2.png", nodeId: "bidding-project-apply" ,name:null},
                    { fileName: "3.png", nodeId: "bidding-it-risk" ,name:null},
                    { fileName: "2.png", nodeId: "bidding-it-risk" ,name:null},
                    { fileName: "4.png", nodeId: "bidding-reported-material" ,name:null},
                    { fileName: "5.png", nodeId: "bidding-bid-opening-evaluation" ,name:'附件1'},
                    { fileName: "6.png", nodeId: "bidding-bid-opening-evaluation",name:'附件2' },
                    { fileName: "7.png", nodeId: "bidding-bid-opening-evaluation" ,name:'附件3'}
                ]

原数组改成下面的对象

         obj = {
                    'bidding-bid-opening-evaluation': {
                        '附件1': [
                            { fileName: "5.png", nodeId: "bidding-bid-opening-evaluation", name: '附件1' }
                        ],
                        '附件2': [
                            { fileName: "6.png", nodeId: "bidding-bid-opening-evaluation", name: '附件2' },
                        ],
                        '附件3': [
                            { fileName: "7.png", nodeId: "bidding-bid-opening-evaluation", name: '附件3' }
                        ]
                    },
                    'bidding-it-risk': {
                        'fileList': [
                            { fileName: "3.png", nodeId: "bidding-it-risk", name: null },
                            { fileName: "2.png", nodeId: "bidding-it-risk", name: null }
                        ]
                    },
                    'bidding-project-apply': {
                        'fileList': [
                            { fileName: "1.png", nodeId: "bidding-project-apply", name: null },
                            { fileName: "2.png", nodeId: "bidding-project-apply", name: null }
                        ]
                    },
                    'bidding-reported-material': {
                        'fileList': [
                            { fileName: "4.png", nodeId: "bidding-reported-material", name: null }
                        ]
                    }
                }

这种怎么改造好?

  • 写回答

2条回答 默认 最新

  • hfhan_872914334 2022-10-19 14:42
    关注

    一次遍历就解决了

    let res = list.reduce((o, item) => {
        let parent = o[item.nodeId] || (o[item.nodeId] = {})
        let key = item.name || 'fileList'
        let arr = parent[key] || (parent[key] = [])
        arr.push(item)
        return o
    }, {})
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日
  • 修改了问题 10月19日
  • 创建了问题 10月19日

悬赏问题

  • ¥15 目标计数模型训练过程中的问题
  • ¥100 Acess连接SQL 数据库后 不能用中文筛选
  • ¥15 用友U9Cloud的webapi
  • ¥20 电脑拓展屏桌面被莫名遮挡
  • ¥20 ensp,用局域网解决
  • ¥15 Python语言实验
  • ¥15 我每周要在投影仪优酷上自动连续播放112场电影,我每一周遥控操作一次投影仪,并使得电影永远不重复播放,请问怎样操作好呢?有那么多电影看吗?
  • ¥20 电脑重启停留在grub界面,引导出错需修复
  • ¥15 matlab透明图叠加
  • ¥50 基于stm32l4系列 使用blunrg-ms的ble gatt 创建 hid 服务失败