数组的初级分组

项目过程中会碰到一些场景需要将有多条数据的对象数组按照对象的某些字段名进行分组,本文使用lodash中的_.groupBy来完成该操作,并对该方法进行初级封装。

以vue2.0脚手架为例

一、安装lodash

在项目内安装

yarn add lodash

//或者

npm i lodash -S

二、引入全部lodash代码

import _ from "lodash";//vue文件内使用
//或者
const _ = require("lodash");//js文件内使用,vue文件内也可用

三、封装函数完成对象数组的按特定字段名分组

//data:数据源,type:分组的依据,value:分组后的key值,datas:分组后的value值,是一个数组
function setData(data, type, value, datas) {
    let arr = [];
    value = value || "value";
    //分组后的key值不传默认为value,分组后的value值不传默认为children
    datas = datas || "children";
    for (let key in _.groupBy(data, type)) {
        arr.push({
            [value]: key,
            [datas]: _.groupBy(data, type)[key],
        });
    }
    return arr;
}

四、实例

有下列数组,将其按照className分组

let arr = [
    { id: 1, className: "ZZ20230101", student: ["张三", "李四"] },
    { id: 2, className: "ZZ20230102", student: ["王五", "赵六"] },
    { id: 3, className: "ZZ20230103", student: ["小明", "李华"] },
    { id: 4, className: "ZZ20230101", student: ["张大伟", "仍未到"] },
    { id: 5, className: "ZZ20230101", student: ["十五", "逸散"] },
    { id: 6, className: "ZZ20230103", student: ["Bob", "刘凯"] },
    { id: 7, className: "ZZ20230102", student: ["大碗饭", "汪汪"] },
    { id: 8, className: "ZZ20230101", student: ["定位三", "布局"] },
    { id: 9, className: "ZZ20230103", student: ["固定", "绝对"] },
    { id: 10, className: "ZZ20230101", student: ["达瓦", "哇哇的"] },
    { id: 11, className: "ZZ20230102", student: ["五五分", "来对待"] },
];
let arr1 = setData(arr, "className","className","datas");
console.log(arr1);

输出结果

//输出结果如下
[
    {
        className: "ZZ20230101",//className取决于传的第三个参数,默认为value
        datas: [//datas取决于第四个参数,默认为children
            {
                id: 1,
                className: "ZZ20230101",
                student: ["张三", "李四"],
            },
            {
                id: 4,
                className: "ZZ20230101",
                student: ["张大伟", "仍未到"],
            },
            {
                id: 5,
                className: "ZZ20230101",
                student: ["十五", "逸散"],
            },
            {
                id: 8,
                className: "ZZ20230101",
                student: ["定位三", "布局"],
            },
            {
                id: 10,
                className: "ZZ20230101",
                student: ["达瓦", "哇哇的"],
            },
        ],
    },
    {
        className: "ZZ20230102",
        datas: [
            {
                id: 2,
                className: "ZZ20230102",
                student: ["王五", "赵六"],
            },
            {
                id: 7,
                className: "ZZ20230102",
                student: ["大碗饭", "汪汪"],
            },
            {
                id: 11,
                className: "ZZ20230102",
                student: ["五五分", "来对待"],
            },
        ],
    },
    {
        className: "ZZ20230103",
        datas: [
            {
                id: 3,
                className: "ZZ20230103",
                student: ["小明", "李华"],
            },
            {
                id: 6,
                className: "ZZ20230103",
                student: ["Bob", "刘凯"],
            },
            {
                id: 9,
                className: "ZZ20230103",
                student: ["固定", "绝对"],
            },
        ],
    },
];

五、脚手架内使用

可以将该函数在 main.js 内绑定在Vue原型上,这样可以全局调用

import _ from "lodash";
//data:数据源,type:分组的依据,value:分组后的key值,datas:分组后的value值,是一个数组
function setData(data, type, value, datas) {
    let arr = [];
    value = value || "value";
    //分组后的key值不传默认为value,分组后的value值不传默认为children
    datas = datas || "children";
    for (let key in _.groupBy(data, type)) {
        arr.push({
            [value]: key,
            [datas]: _.groupBy(data, type)[key],
        });
    }
    return arr;
}
Vue.prototype.$setData = setData;

六、使用方法

this.$setData(arr, "className")

R语言初级教程是为初学者设计的教程,旨在帮助他们快速上手并掌握R语言的基本知识和技能。教程主要包括以下内容: 1. R语言简介:介绍R语言的背景、特点以及在数据分析和统计学中的应用。同时还会介绍R语言的发展历程和使用前景,让学习者对R语言有一个整体的认识。 2. R语言安装与设置:讲解如何下载、安装和设置R语言的开发环境,以便能够顺利运行R语言,并使用相应的工具和包来进行数据分析和可视化。 3. R语言基础语法:介绍R语言的基本语法规则和常见数据结构,如向量、矩阵、数组、数据框等。学习者会了解如何创建、修改、存储和调用这些数据结构,并进行相应的计算操作。 4. R语言数据操作:教导学习者如何导入和导出数据,及如何对数据进行清洗、整理和转换。还包括数据筛选、排序、合并、分组、汇总等数据操作技巧。 5. R语言统计分析:介绍如何使用R语言进行常见的统计分析,如描述统计、假设检验、方差分析、回归分析等。学习者会学习如何进行数据可视化,并用统计图表来展示分析结果。 6. R语言编程:引导学习者学习R语言的编程风格和技巧,掌握条件语句、循环语句、函数定义等编程基础知识。还会介绍常用的编程技巧和调试方法,帮助学习者提高编程效率和代码质量。 通过这个初级教程,学习者可以逐步掌握R语言的基本知识和技能,为进一步深入学习和应用R语言打下坚实的基础。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值