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

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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。