JS 根据某个属性对数据进行分组

本文介绍了如何使用JavaScript函数对数据源中的数据根据给定字段进行分组,如按银行类型分类,并提供了一个示例说明操作过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

未分组之前的数据
在这里插入图片描述

/**
 * 根据共同属性将数据分组
 * @param data [数据源]
 * @param field [字段名]
 */
const groupingData = (data, filed) => {
    let map = {};
    let dest = [];
    data.forEach(item => {
        if(!map[item[filed]]) {
            dest.push({
                [filed]: item[filed],
                list: [item]
            });
            map[item[filed]] = item;
        } else {
            dest.forEach(dItem => {
                if (dItem[filed] == item[filed]) {
                    dItem.list.push(item);
                }
            });
        }
    })
    return dest;
}

例如:按银行类型分类进行分组,结果如下
在这里插入图片描述

JavaScript中,可以通过编写一个函数来根据对象数组中的某个属性进行分组。通常,我们会使用`reduce`方法来实现这一功能,因为它可以将数组中的元素累加到一个单一的结果中。以下是一个简单的例子,展示了如何根据对象数组中的“category”属性进行分组: ```javascript function groupBy(arr, property) { return arr.reduce((accumulator, current) => { const key = current[property]; if (!accumulator[key]) { accumulator[key] = []; } accumulator[key].push(current); return accumulator; }, {}); } // 示例数据 const items = [ { name: 'Item 1', category: 'A' }, { name: 'Item 2', category: 'B' }, { name: 'Item 3', category: 'A' }, { name: 'Item 4', category: 'B' }, { name: 'Item 5', category: 'C' } ]; // 根据category属性进行分组 const groupedItems = groupBy(items, 'category'); console.log(groupedItems); ``` 在这个例子中,`groupBy`函数接受两个参数:一个对象数组`arr`和一个属性名`property`。函数使用`reduce`方法遍历数组,并根据每个对象的`property`属性值将对象分组到累加器对象`accumulator`中。如果累加器中还没有当前键,则先创建一个空数组,然后将当前对象推入这个数组。 执行上述代码后,`groupedItems`对象将会根据`category`属性将`items`数组中的对象分组,例如: ```javascript { A: [ { name: 'Item 1', category: 'A' }, { name: 'Item 3', category: 'A' } ], B: [ { name: 'Item 2', category: 'B' }, { name: 'Item 4', category: 'B' } ], C: [ { name: 'Item 5', category: 'C' } ] } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一行代码上晴天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值