一些常用的和并后台返回json数据的方法

本文介绍如何使用JavaScript对JSON数据进行合并与分组,包括根据ID或Group字段合并对象,以及根据条件进行数据分组的方法。适用于前端开发、后端开发及数据处理等领域。

1.根据id和并json

<script>
    let arr = [{
            id: 1,
            name: '张三'
        },
        {
            id: 1,
            name: '李四'
        },
        {
            id: 3,
            name: '王五'
        },
        {
            id: 1,
            name: '二傻子'
        },
        {
            id: 5,
            name: '老王'
        },
        {
            id: 5,
            name: '阿旺'
        }
    ];

    //按照id相同合并
    //
    arr = arr.map(function (item, index, arr) {
        const i = arr.find(_item => item.id === _item.id);
        if (i !== item) {
            i.name.push(item.name);
            return undefined;
        } else {
            i.name = [i.name];
            return i;
        }
    }).filter(item => item !== undefined);

    console.log(arr);
</script>

2.根据Group和并json

<script>
    // 原数据类型
    let arr2 = [{
            "Group": 1,
            "Groupheader": "质量管理",
            "Leftimg": "",
            "Left": "",
            "Min": "",
            "Right": "",
            "Rightimg": ""
        },
        {
            "Group": 1,
            "Groupheader": "",
            "Leftimg": "",
            "Left": "",
            "Min": "质量巡检",
            "Right": "",
            "Rightimg": ""
        },
        {
            "Group": 2,
            "Groupheader": "设备管理",
            "Leftimg": "",
            "Left": "",
            "Min": "",
            "Right": "",
            "Rightimg": ""
        },
        {
            "Group": 2,
            "Groupheader": "",
            "Leftimg": "",
            "Left": "",
            "Min": "设备专业点检",
            "Right": "",
            "Rightimg": ""
        },
        {
            "Group": 2,
            "Groupheader": "",
            "Leftimg": "",
            "Left": "",
            "Min": "设备日检",
            "Right": "",
            "Rightimg": ""
        },
        {
            "Group": 2,
            "Groupheader": "",
            "Leftimg": "",
            "Left": "",
            "Min": "设备周检",
            "Right": "",
            "Rightimg": ""
        },
        {
            "Group": 2,
            "Groupheader": "",
            "Leftimg": "",
            "Left": "",
            "Min": "设备月检",
            "Right": "",
            "Rightimg": ""
        }
    ];


    // 转化
    newarr = [{
        Group: 1,
        data: [{
            "Group": 1,
            "Groupheader": "",
            "Leftimg": "",
            "Left": "",
            "Min": "质量巡检",
            "Right": "",
            "Rightimg": ""
        }, {
            "Group": 1,
            "Groupheader": "",
            "Leftimg": "",
            "Left": "",
            "Min": "质量巡检",
            "Right": "",
            "Rightimg": ""
        }]
    }, {
        Group: 2,
        data: [{
                "Group": 2,
                "Groupheader": "",
                "Leftimg": "",
                "Left": "",
                "Min": "设备专业点检",
                "Right": "",
                "Rightimg": ""
            }, {
                "Group": 2,
                "Groupheader": "",
                "Leftimg": "",
                "Left": "",
                "Min": "设备专业点检",
                "Right": "",
                "Rightimg": ""
            }, {
                "Group": 2,
                "Groupheader": "",
                "Leftimg": "",
                "Left": "",
                "Min": "设备日检",
                "Right": "",
                "Rightimg": ""
            },
            {
                "Group": 2,
                "Groupheader": "",
                "Leftimg": "",
                "Left": "",
                "Min": "设备周检",
                "Right": "",
                "Rightimg": ""
            }, {
                "Group": 2,
                "Groupheader": "",
                "Leftimg": "",
                "Left": "",
                "Min": "设备周检",
                "Right": "",
                "Rightimg": ""
            }
        ]
    }]




    var map = {}, //map用来判断是否已经存在
        dest = [];
    arr2.forEach(function (item, i, arr) {
        //如果这个没有找到这个属性就把该属性加在map里  并且把重组的数据放到dest里
        if (!map[item.Group]) {
            dest.push({
                Group: item.Group,
                data: [item]
            })
            map[item.Group] = item
            //如果找到了该属性 证明该值已经存在了  可以直接在dest里面的data数据里push进去
        } else {
            dest.forEach(function (item1, i1, arr1) {
                if (item1.Group == item.Group) {
                    item1.data.push(item);
                }
            })
        }
    })
    console.log(dest)
    console.log(map)
</script>

3.根据条件分组

<script>
    // 分组   不确定有多少条数据
    // 根据sum来分值   sum 小于等于3一组   大于3小于等于6一组   以此类推
    let json = [{
            sum: 1,
            value: '11111111111111'
        },
        {
            sum: 2,
            value: '2222222222222'
        },

        {
            sum: 4,
            value: '44444444444444'
        },
        {
            sum: 5,
            value: '55555555555555555'
        },
        {
            sum: 6,
            value: '66666666666666666'
        },


        {
            sum: 8,
            value: '8888888888888888888'
        },
        {
            sum: 9,
            value: '9999999999999999'
        },

        {
            sum: 10,
            value: 'aaaaaaaaaaaaaa'
        },
        {
            sum: 11,
            value: 'bbbbbbbbbbbbbbbbbbbbb'
        },
        {
            sum: 12,
            value: 'ccccccccccccccccc'
        },

        {
            sum: 13,
            value: 'ddddddddddddddddddddd'
        },
        {
            sum: 14,
            value: 'eeeeeeeeeeeeeeeeee'
        },
        {
            sum: 15,
            value: 'fffffffffffffffffff'
        },

        {
            sum: 16,
            value: 'gggggggggggggggggggggggg'
        },
        {
            sum: 17,
            value: 'hhhhhhhhhhhhhhhhhhhhhh'
        },

    ]

    console.log(json)

    // map1={
    //     1:123,
    //     2:345,
    // }
    //通过属性判断该值是否存在的   1 2 就是属性
    var map1 = {},
        result = [];
    json.forEach(function (item, i, arr) {
        var row = Math.ceil(item.sum / 3); //该值代表应该在第几行

        if (!map1[row]) {
            result.push({
                row: row,      //第几行
                data: [item]   //所有的数据
            })
            map1[row] = row   //后面的row无所谓放啥
        } else {
            result.forEach(function (item1, i1, arr1) {
                if (item1.row == row) {
                    item1.data.push(item);
                }
            })
        }
    })

    console.log(result)
    console.log(map1)
</script>

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值