*初级小白*~ 2022-09-19 18:21 采纳率: 97.9%
浏览 59
已结题

javascript数据转换

如何把a数组形式的数据转换为newA形式的数据?


  let a = [{
        name: 'aa',
        platform: 'iOS1',
        version: '10.3.4.5654',
        upgradeNum: 500,
        creator: 'Jack',
        data: {
            createdAt: '2014-12-21 23:12:00',
            date: '2014-12-24 23:12:00',
            name: `This is production name 1`,
            upgradeNum: 'Upgraded: 56',
        }
    }, {
        name: 'aa',
        platform: 'iOS1',
        version: '10.3.4.5654',
        upgradeNum: 500,
        creator: 'Jack',
        data: {
            createdAt: '2014-12-22 23:12:00',
            date: '2014-12-24 23:12:00',
            name: `This is production name 2`,
            upgradeNum: 'Upgraded: 57',
        }
    }, {
        name: 'aa',
        platform: 'iOS1',
        version: '10.3.4.5654',
        upgradeNum: 500,
        creator: 'Jack',
        data: {
            createdAt: '2014-12-23 23:12:00',
            date: '2014-12-24 23:12:00',
            name: `This is production name 3`,
            upgradeNum: 'Upgraded: 58',
        }
    }, {
        name: 'bb',
        platform: 'iOS2',
        version: '10.3.4.5654',
        upgradeNum: 600,
        creator: 'Tom',
        data: {
            createdAt: '2014-12-11 23:12:00',
            date: '2014-12-24 23:12:00',
            name: `This is production name 1`,
            upgradeNum: 'Upgraded: 1',
        }
    }, {
        name: 'bb',
        platform: 'iOS2',
        version: '10.3.4.5654',
        upgradeNum: 600,
        creator: 'Tom',
        data: {
            createdAt: '2014-12-22 23:12:00',
            date: '2014-12-24 23:12:00',
            name: `This is production name 2`,
            upgradeNum: 'Upgraded: 2',
        }
    }, ]
    let newA = [{
        name: 'aa',
        platform: 'iOS1',
        version: '10.3.4.5654',
        upgradeNum: 500,
        creator: 'Jack',
        children: [{
            createdAt: '2014-12-21 23:12:00',
            date: '2014-12-24 23:12:00',
            name: `This is production name 1`,
            upgradeNum: 'Upgraded: 56',
        }, {
            createdAt: '2014-12-22 23:12:00',
            date: '2014-12-24 23:12:00',
            name: `This is production name 2`,
            upgradeNum: 'Upgraded: 57',
        }, {
            createdAt: '2014-12-23 23:12:00',
            date: '2014-12-24 23:12:00',
            name: `This is production name 3`,
            upgradeNum: 'Upgraded: 58',
        }]
    }, {
        name: 'bb',
        platform: 'iOS2',
        version: '10.3.4.5654',
        upgradeNum: 600,
        creator: 'Tom',
        children: [{
            createdAt: '2014-12-11 23:12:00',
            date: '2014-12-24 23:12:00',
            name: `This is production name 1`,
            upgradeNum: 'Upgraded: 1',
        }, {
            createdAt: '2014-12-22 23:12:00',
            date: '2014-12-24 23:12:00',
            name: `This is production name 2`,
            upgradeNum: 'Upgraded: 2',
        }]
    }]
  • 写回答

5条回答 默认 最新

  • CSDN专家-showbo 2022-09-19 18:51
    关注

    题主要的代码如下

    
    <script>
    
        let a = [{
            name: 'aa',
            platform: 'iOS1',
            version: '10.3.4.5654',
            upgradeNum: 500,
            creator: 'Jack',
            data: {
                createdAt: '2014-12-21 23:12:00',
                date: '2014-12-24 23:12:00',
                name: `This is production name 1`,
                upgradeNum: 'Upgraded: 56',
            }
        }, {
            name: 'aa',
            platform: 'iOS1',
            version: '10.3.4.5654',
            upgradeNum: 500,
            creator: 'Jack',
            data: {
                createdAt: '2014-12-22 23:12:00',
                date: '2014-12-24 23:12:00',
                name: `This is production name 2`,
                upgradeNum: 'Upgraded: 57',
            }
        }, {
            name: 'aa',
            platform: 'iOS1',
            version: '10.3.4.5654',
            upgradeNum: 500,
            creator: 'Jack',
            data: {
                createdAt: '2014-12-23 23:12:00',
                date: '2014-12-24 23:12:00',
                name: `This is production name 3`,
                upgradeNum: 'Upgraded: 58',
            }
        }, {
            name: 'bb',
            platform: 'iOS2',
            version: '10.3.4.5654',
            upgradeNum: 600,
            creator: 'Tom',
            data: {
                createdAt: '2014-12-11 23:12:00',
                date: '2014-12-24 23:12:00',
                name: `This is production name 1`,
                upgradeNum: 'Upgraded: 1',
            }
        }, {
            name: 'bb',
            platform: 'iOS2',
            version: '10.3.4.5654',
            upgradeNum: 600,
            creator: 'Tom',
            data: {
                createdAt: '2014-12-22 23:12:00',
                date: '2014-12-24 23:12:00',
                name: `This is production name 2`,
                upgradeNum: 'Upgraded: 2',
            }
        },]
        kv = {};
        let newA=[]
        a.forEach(i => {
            let index = kv[i.name] === undefined ? newA.length : kv[i.name];
            kv[i.name] = index;
            let item = newA[index] || i;
            if (item.children) {
                item.children.push(i.data)
            } else {
                item.children = [i.data];
                delete i.data;
                newA.push(item)
            }
        });
        console.log(newA)
    </script>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 9月29日
  • 已采纳回答 9月21日
  • 创建了问题 9月19日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值