[英]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.