你要来点儿小草莓么 2022-07-07 19:50 采纳率: 50%
浏览 38
已结题

js实现json的格式改变

[{name: '省级校验不合规', value: 0, type: 'top_1'},
{name: '行政处罚修复', value: 100000, type: 'top_1'},
{name: '浙江迟报', value: 200, type: 'top_1'},
{name: '新行政处罚', value: 0, type: 'top_1'},
{name: '国家校验不合规', value: 0, type: 'top_1'},
{name: '省级校验不合规', value: 100, type: 'top_2'},
{name: '新行政许可', value: 200000, type: 'top_2'},
{name: '国家校验不合规', value: 500, type: 'top_2'},
{name: '浙江迟报', value: 0, type: 'top_2'}]

[{name: '省级校验不合规', number1: 0, number2: 100},
{name: '行政处罚修复', number1: 100000, number2: 0},
{name: '浙江迟报', number1: 200, number2: 0},
{name: '新行政处罚', number1: 0, number2: 0},
{name: '国家校验不合规',number1: 0, number2: 500},
{name: '新行政许可', number1: 2000, number2: 0}]

怎么用js实现将上面的数组变成下面的数组呀

  • 写回答

3条回答 默认 最新

  • 林一怂儿 前端领域新星创作者 2022-07-07 21:00
    关注

    不知道写的对不对...

    <!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 arr1 = [{ name: '省级校验不合规', value: 0, type: 'top_1' },
            { name: '行政处罚修复', value: 100000, type: 'top_1' },
            { name: '浙江迟报', value: 200, type: 'top_1' },
            { name: '新行政处罚', value: 0, type: 'top_1' },
            { name: '国家校验不合规', value: 0, type: 'top_1' },
            { name: '省级校验不合规', value: 100, type: 'top_2' },
            { name: '新行政许可', value: 200000, type: 'top_2' },
            { name: '国家校验不合规', value: 500, type: 'top_2' },
            { name: '浙江迟报', value: 0, type: 'top_2' }]
            const arr2 = [{ name: '省级校验不合规', number1: 0, number2: 100 },
            { name: '行政处罚修复', number1: 100000, number2: 0 },
            { name: '浙江迟报', number1: 200, number2: 0 },
            { name: '新行政处罚', number1: 0, number2: 0 },
            { name: '国家校验不合规', number1: 0, number2: 500 },
            // { name: '新行政许可', number1: 2000, number2: 0 }, 兄弟怀疑你给的数据不太对 
            { name: '新行政许可', number1: 0, number2: 200000 }]
    
            function format(arr) {
                let res = [];
                for (const item of arr) {
                    let resItem = res.find(i => i.name === item.name)
                    if (!resItem) {
                        resItem = {
                            name: item.name,
                            number1: 0,
                            number2: 0
                        }
                        res.push(resItem)
                    }
                    resItem[`number${item.type.split('_').pop()}`] = item.value
                }
                return res;
            }
    
            console.log(JSON.stringify(format(arr1)));
            console.log(JSON.stringify(arr2));
            console.log(JSON.stringify(format(arr1)) === JSON.stringify(arr2));
        </script>
    </body>
    
    </html>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月16日
  • 已采纳回答 7月8日
  • 创建了问题 7月7日

悬赏问题

  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令