javascript - 如何将重复项的所有子类别分组到新数组中的一个类别下
问题描述
例如,我有一个包含重复类别的数组
数组 = { 类别:“基于广告的货币化”,子类别:“内容和信息服务”},{ 类别:“资产负债表业务”,子类别:“test1”},{ 类别:“资产负债表业务”,子类别:“测试2"}
我希望能够将该数组的值推送到一个新数组中,但格式如下:
array2 = {类别:“资产负债表业务”,子类别:[{名称:“test1”},{名称:“test2”}]},{类别:“基于广告的货币化”,子类别:[{名称:“内容和信息服务"}]
解决方案
我认为以下内容应该足以实现您想要的。
与往常一样,有很多优化的方法可以做同样的事情,但这应该足以让你开始,你可以自己考虑优化。
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);
推荐阅读
- c# - Endless Runner“跑步机”与对象池的差距
- playframework - logback.xml - 模式布局 - 如何配置响应的内容长度
- javascript - 为选择的js添加向下图标以多选
- angularjs - AngularJs 和 prerender.io
- assembly - 为什么编译器保留一点堆栈空间而不是整个数组大小?
- amazon-ec2 - aws 引导脚本不适用于 cli 命令设置
- c# - 如何在初始化渲染器之前调用方法 [Wpf]
- c# - 如何从 GridView 检索我的 ProductID?
- java - Liferay Json Web 服务参数输入
- javascript - Javascript - 比较两个数组。如果在两者中都找到对象,请更改它