[英]Create new array of objects by grouping array of objects based on property value of each object in javascript
我有一个如下的对象数组,我想通过基于Java脚本中每个对象的属性值对Java脚本对象数组进行分组来创建新的对象数组
在这里,我想根据组ID对对象进行分组,并将其存储到具有唯一组ID的对象数组中。
这是我的对象:
var Object = [
{"Name":15,"GroupID":1,"ComplexObject":1}`object1`
{"Name":16,"GroupID":1,"ComplexObject":1}`object2`
{"Name":17,"GroupID":2,"ComplexObject":2}`object3
{"Name":18,"GroupID":2,"ComplexObject":2}`object4`
{"Name":15,"GroupID":3,"ComplexObject":3}`object5`
{"Name":16,"GroupID":3,"ComplexObject":3}`object6`
{"Name":17,"GroupID":4,"ComplexObject":4}`object7`
{"Name":18,"GroupID":4,"ComplexObject":4}`object8` ];
var new_arr = [];
Objects.forEach(function(object) {
if (new_arr.length <= object.GroupID) {
new_arr[object.GroupID] = [];
}
new_arr[object.GroupID].push(object);
});
更新:如果您想要数组的长度,只需使用:
var new_arr = [];
Objects.forEach(function(object) {
if (new_arr.length < object.GroupID) {
new_arr[object.GroupID - 1] = [];
}
new_arr[object.GroupID - 1].push(object);
});
你会得到这个:
您可以通过检查组ID并将其推入数组对象来尝试这种方式。
var data = [
{"Name":15,"GroupID":1,"ComplexObject":1},
{"Name":16,"GroupID":1,"ComplexObject":1},
{"Name":17,"GroupID":2,"ComplexObject":2},
{"Name":18,"GroupID":2,"ComplexObject":2},
{"Name":15,"GroupID":3,"ComplexObject":3},
{"Name":16,"GroupID":3,"ComplexObject":3},
{"Name":17,"GroupID":4,"ComplexObject":4},
{"Name":18,"GroupID":4,"ComplexObject":4}
];
console.log("Original Data : ", data);
var previousGroupId;
var newObject = new Object();
for(index in data){
var groupId = data[index].GroupID;
if(groupId != previousGroupId){
var newGroup = "GroupId" + groupId;
newObject[newGroup] = new Array();
for(index in data){
if(data[index].GroupID == groupId){
var customObject = {
"GroupID" : groupId,
"Name" : data[index].Name,
"ComplexObject" : data[index].ComplexObject
};
newObject[newGroup].push(customObject);
}
}
}
previousGroupId = groupId;
}
console.log("Grouped data : ", newObject);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.