首页 > 其他分享 >js 对数组进行任意层、n层分组

js 对数组进行任意层、n层分组

时间:2024-07-27 11:39:36浏览次数:13  
标签:category value js subType levels 分组 数组 type

如果分组层数是动态的,即可以是 n 层,可以使用递归函数来实现。以下是一个示例代码,展示了如何实现动态层数分组:

const _ = require('lodash');

// 示例数据
let data = [
    { category: 'A', type: 'X', subType: 'Alpha', value: 1 },
    { category: 'A', type: 'X', subType: 'Beta', value: 2 },
    { category: 'A', type: 'Y', subType: 'Alpha', value: 3 },
    { category: 'B', type: 'X', subType: 'Alpha', value: 4 },
    { category: 'B', type: 'Y', subType: 'Beta', value: 5 },
    { category: 'B', type: 'Y', subType: 'Alpha', value: 6 },
];

function groupByNLevels(data, levels) {
    if (levels.length === 0) {
        return data;
    }

    const [currentLevel, ...restLevels] = levels;

    let grouped = _.groupBy(data, currentLevel);

    _.forEach(grouped, (value, key) => {
        grouped[key] = groupByNLevels(value, restLevels);
    });

    return grouped;
}

// 定义分组层级
let levels = ['category', 'type', 'subType'];

let groupedData = groupByNLevels(data, levels);
console.log(JSON.stringify(groupedData, null, 2));

在这个示例中,groupByNLevels 函数接受一个数据数组和一个包含分组层级的数组。函数使用递归的方法对数据进行逐层分组,直到没有剩余的分组层级。

你可以根据需要调整 levels 数组中的属性名和顺序,以实现不同的分组层级。运行代码后,groupedData 将包含按指定层级分组的数据。

标签:category,value,js,subType,levels,分组,数组,type
From: https://www.cnblogs.com/jocongmin/p/18326762

相关文章