Javascript 如何构造这些数据?JS

Javascript 如何构造这些数据?JS,javascript,arrays,object,Javascript,Arrays,Object,嘿,我在构建这些数据时遇到了麻烦。我想做的是在数据中循环并创建一个对象[region],其中包含属于该区域的所有数据 要可视化: 0:{region: "1", id: "1P1", P1: "7", quantity: 12, multiSum: 84, …} 1:{region: "1", id: "1P2", P2: "7", quantity: 25, multiSum: 175, …} 2:{region: "1", id: "1P3", P3: "7", quantity: 44,

嘿,我在构建这些数据时遇到了麻烦。我想做的是在数据中循环并创建一个对象[region],其中包含属于该区域的所有数据

要可视化:

0:{region: "1", id: "1P1", P1: "7", quantity: 12, multiSum: 84, …}
1:{region: "1", id: "1P2", P2: "7", quantity: 25, multiSum: 175, …}
2:{region: "1", id: "1P3", P3: "7", quantity: 44, multiSum: 308, …}
3:{region: "1", id: "1P4", P4: "7", quantity: 66, multiSum: 462, …}
4:{region: "1", id: "1P5", P5: "7", quantity: 99, multiSum: 693, …}
5:{region: "1", id: "1P6", P6: "7", quantity: 9, multiSum: 63, …}
6:{region: "3", id: "3P1", P1: "8", quantity: 102, multiSum: 816, …}
7:{region: "3", id: "3P2", P2: "8", quantity: 212, multiSum: 1696, …}
8:{region: "3", id: "3P3", P3: "7", quantity: 244, multiSum: 1708, …}
9:{region: "3", id: "3P4", P4: "6", quantity: 964, multiSum: 5784, …}
10:{region: "3", id: "3P5", P5: "4", quantity: 894, multiSum: 3576, …}
11:{region: "3", id: "3P6", P6: "1", quantity: 904, multiSum: 904, …}
这是来自用户输入的数据,因此重复。我将感谢任何帮助


谢谢

另一种方法是使用功能reduce对区域进行分组

这种方法为每个区域增加一个数量级和多个数量级,并将剩余的关键点分配给分组的区域

最后,此方法删除包含当前数量计数和多重计数的helper属性计数

由于数量和多层属性的原因,该方法有点硬编码,但是,这是以后改进它的一个良好开端

设arr=[{region:1,id:1P1,P1:7,quantity:12,multiSum:84},{region:1,id:1P2,P2:7,quantity:25,multiSum:175},{region:1,id:1P3,P3:7,quantity:44,multiSum:308},{region:1,id:1P4,P4:7,quantity:66,multiSum:462},{region:1,id:1P5,P5,P5,P5:7,quantity:99,multiSum:693},region:1,id:1P6,multiSum:63},{region:3,id:3P1,P1:8,数量:102,multiSum:816},{region:3,id:3P2,P2:8,数量:212,multiSum:1696},{region:3,id:3P3,P3:7,数量:244,multiSum:1708},{region:3,id:3P4,数量:964,multiSum:5784},{region:3,id:3P5,P5,P5:4,数量:894,multiSum:3576},{区域:3,id:3P6,P6:1,数量:904,多线程:904}], knownKeys=['region'、'id'、'multiSum'、'quantity'], 后果 Object.valuesresult=arr.reducea,c=>{ 如果!a[c.region]a[c.region]={计数:{multiSum:0,数量:0}; 设计数=一个[c.区域].计数; Object.assigna[c.region],{[`quantity${counts.quantity+=1}`]:c.quantity,[`multiSum${counts.multiSum+=1}`]:c.multiSum}; Object.keysc.forEachk=>{ 如果!knownKeys.includesk Object.assigna[c.region],{[k]:c[k]}; }; 返回a; },{}.forEachv=>删除v.counts; console.logresult;
.as console wrapper{max height:100%!important;top:0;}您可以将其构造为对象数组,然后通过索引或使用for..对其进行迭代:

设arr=[ {区域:1,id:1P1,P1:7,数量:12,multiSum:84}, {区域:1,id:1P2,P2:7,数量:25,多线程:175}, {区域:1,id:1P3,P3:7,数量:44,multiSum:308}, {地区:1,id:1P4,P4:7,数量:66,多音频:462}, {地区:1,id:1P5,P5:7,数量:99,多音频:693}, {区域:1,id:1P6,P6:7,数量:9,多线程:63} ] 用于arr的obj{ console.logobj; //根据这里的obj.region执行您需要的任何数据操作
}最初的数据类型是什么?是对象的对象还是对象的数组?对象的数组无论是你得到的数据还是你想要得到的数据都是有意义的。有更好的方法来组织数据。
    ["1": {P1: 7, P2: 7: P3: 7,..., quantity1: 12, quantity2: 25,...},
"3": {P1: 8, P2: 8: P3: 7,..., quantity1: 102, quantity2: 212,...}]