簡體   English   中英

通過基於javascript中每個對象的屬性值對對象數組進行分組來創建新的對象數組

[英]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);

jsFiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM