如何将对象数组转换为自定义分组数组

我正在尝试将数据对象转换为自定义格式

这是我要转换的数据

[
  { Name: 15,GroupID: 1,Id: 1 },{ Name: 16,{ Name: 17,GroupID: 2,Id: 2 },{ Name: 18,{ Name: 15,GroupID: 3,Id: 3 },GroupID: 4,Id: 4 },Id: 4 }
];

这就是我要实现的目标

  { GroupID: 1 },{ GroupID: 2 },{ GroupID: 3 },{ GroupID: 4 },Id: 4 }

这是我到目前为止尝试过的

var data = [
  { Name: 15,Id: 4 }
];

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,"Id": data[index].Id
        };
        newObject[newGroup].push(customObject);
      }
    }
  }
  previousGroupId = groupId;
}

console.log(newObject);

即使我试图参考这个 Javascript group objects by property

任何建议都会有所帮助。

c275896741 回答:如何将对象数组转换为自定义分组数组

假设将对象数组作为结果集,则可以获取包含数组的哈希表,将平面数组作为结果集。

var data = [{ Name: 15,GroupID: 1,Id: 1 },{ Name: 16,{ Name: 17,GroupID: 2,Id: 2 },{ Name: 18,{ Name: 15,GroupID: 3,Id: 3 },GroupID: 4,Id: 4 },Id: 4 }],result = Object
        .values(data.reduce((r,{ Name,GroupID,Id }) => {
            r[GroupID] = r[GroupID] || [{ GroupID }];
            r[GroupID].push({ Name,Id });
            return r;
        },{}))
        .flat();

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

本文链接:https://www.f2er.com/3154158.html

大家都在问