js 数组根据某个字段进行分组


前言

接上一条博文账单页面月份悬浮,在那个功能中,有一个数据处理,将后端同事返回的一维数据进行月份抽取分组成二维数据,今天分享一下抽取的封装的方法,可直接服用。


一、数据分组方法封装

/**
 * 数据处理
 * @param arr [Array] 被处理的数组
 * @param group_key [String] 分组字段
*/
function formattingData (arr, group_key){
    let map = {}
    let res = []

    for (let i = 0; i < arr.length; i++) {
        let ai = arr[i]
        if (!map[ai[group_key]]) {
            map[ai[group_key]] = [ai]
        } else {    
            map[ai[group_key]].push(ai)
        }
    }
    Object.keys(map).forEach(key => {
        res.push({
            [group_key]: key,
            list: map[key],
        })
    })

    return res
}

二、使用步骤

1.使用方法

var arr = [
            { id: '1', group: '一班', name: '张三' },
            { id: '2', group: '二班', name: '李四' },
            { id: '3', group: '一班', name: '王五' },
            { id: '4', group: '一班', name: '老六' },
            { id: '5', group: '二班', name: '乔治' },
            { id: '6', group: '三班', name: '麦克' }
          ]
// 直接调用formattingData方法,将需要处理的一维数组及key传入即可
var newArr = formattingData(arr, 'group')
console.log('newArr :>> ', newArr);

2.效果展示

在这里插入图片描述

总结

在日常开发中,由于分页原因需使用一维数据进行数据传输,但是又需要实现二维数组的效果,便可使用此方法进行数据处理。有兴趣的小伙伴可以研究一下封装方法的代码。也可直接复制粘贴方法直接使用。so easy~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值