首页 > 解决方案 > 如何将重复项的所有子类别分组到新数组中的一个类别下

问题描述

例如,我有一个包含重复类别的数组

数组 = { 类别:“基于广告的货币化”,子类别:“内容和信息服务”},{ 类别:“资产负债表业务”,子类别:“test1”},{ 类别:“资产负债表业务”,子类别:“测试2"}

我希望能够将该数组的值推送到一个新数组中,但格式如下:

array2 = {类别:“资产负债表业务”,子类别:[{名称:“test1”},{名称:“test2”}]},{类别:“基于广告的货币化”,子类别:[{名称:“内容和信息服务"}]

标签: javascript

解决方案


我认为以下内容应该足以实现您想要的。

与往常一样,有很多优化的方法可以做同样的事情,但这应该足以让你开始,你可以自己考虑优化。

var array = [{ Category: "Ad-Based Monetization", SubCategory: "Content & Information Services"}, { Category: "Balance sheet businesses", SubCategory: "test1"}, { Category: "Balance sheet businesses", SubCategory: "test2"}]

var obj = {}

// Create a simple lookup with Category as key and SubCategories as value
array.forEach(arr => {
    if(obj.hasOwnProperty(arr.Category)){
        obj[arr.Category].push(arr.SubCategory);
    } else {
        obj[arr.Category] = [arr.SubCategory];
    }
});

const final = []

// Loop over the obj created and format it into the desired structure
for (let Category in obj){
    const SubCategory = obj[Category].map(name => ({name}));
    final.push({Category, SubCategory})
}

console.log(final);


推荐阅读