基于键对数组项进行分组';javascript中的s值

基于键对数组项进行分组';javascript中的s值,javascript,arrays,reduce,Javascript,Arrays,Reduce,我有一个数据数组,如下所示 const data = [ { "SurveyGroupID": 28, "SurveyGroupTypeID": 4, "SurveyID": 23, "SurveyGroupSequence": 1, "SurveyQuestionSequence": 1,

我有一个数据数组,如下所示

const data = [
            {
                "SurveyGroupID": 28,
                "SurveyGroupTypeID": 4,
                "SurveyID": 23,
                "SurveyGroupSequence": 1,
                "SurveyQuestionSequence": 1,
                "Question": "What is your reason for visiting our practice?",
                "DataTypeName": "Memo",
                "DataTypeID": 4,
                "Required": true
            },
            {
                "SurveyGroupID": 28,
                "SurveyGroupTypeID": 4,
                "SurveyID": 23,
                "SurveyGroupSequence": 2,
                "SurveyQuestionSequence": 2,
                "Question": "What is your height?",
                "DataTypeName": "String",
                "DataTypeID": 2,
                "Required": true
            },
            {
                "SurveyGroupID": 28,
                "SurveyGroupTypeID": 4,
                "SurveyID": 23,
                "SurveyGroupSequence": 1,
                "SurveyQuestionSequence": 3,
                "Question": "What is your weight?",
                "DataTypeName": "Integer",
                "DataTypeID": 3,
                "Required": true
            },
]
我需要根据键的值对数组进行分组。也就是说,我需要将数组项分组到一个
字段
键,该键具有相同的
SurveyGroupSequence

导致

[
  {
    "fields": [
      {
        "SurveyGroupTypeID": "1",
        "Question": "What is your reason for visiting our practice?"
      },
      {
        "SurveyGroupTypeID": "1",
        "Question": "What is your weight?"
      }
    ]
  },
  {
    "fields": [
      {
        "SurveyGroupTypeID": "2",
        "Question": "What is your height?"
      }
    ]
  }
]
我怎样才能做到这一点?多谢各位

我试过的
使用对象映射按键收集SurveyGroupSequence作为SurveyGroupTypeID:

函数groupByID(数据){
console.log(
Object.values(data.reduce((acc,{SurveyGroupSequence:SurveyGroupTypeID,Question})=>{
if(acc[SurveyGroupTypeID])
acc[SurveyGroupTypeID]。推送({SurveyGroupTypeID,问题})
其他的
acc[SurveyGroupTypeID]=[{SurveyGroupTypeID,问题}]
返回acc;
},{}))
)
}
常数数据=[
{
“SurveyGroupID”:28,
“SurveyGroupTypeID”:4,
“被调查者”:23,
“SurveyGroupSequence”:1,
“调查问题顺序”:1,
“问题”:“您访问我们机构的原因是什么?”,
“数据类型名称”:“备忘录”,
“数据类型ID”:4,
“必需”:true
},
{
“SurveyGroupID”:28,
“SurveyGroupTypeID”:4,
“被调查者”:23,
“SurveyGroup序列”:2,
“调查问题顺序”:2,
“问题”:“你的身高是多少?”,
“DataTypeName”:“字符串”,
“数据类型ID”:2,
“必需”:true
},
{
“SurveyGroupID”:28,
“SurveyGroupTypeID”:4,
“被调查者”:23,
“SurveyGroupSequence”:1,
“调查问题顺序”:3,
“问题”:“你的体重是多少?”,
“DataTypeName”:“整数”,
“数据类型ID”:3,
“必需”:true
},
]

groupByID(数据)
使用对象映射按键收集SurveyGroupSequence作为SurveyGroupTypeID:

函数groupByID(数据){
console.log(
Object.values(data.reduce((acc,{SurveyGroupSequence:SurveyGroupTypeID,Question})=>{
if(acc[SurveyGroupTypeID])
acc[SurveyGroupTypeID]。推送({SurveyGroupTypeID,问题})
其他的
acc[SurveyGroupTypeID]=[{SurveyGroupTypeID,问题}]
返回acc;
},{}))
)
}
常数数据=[
{
“SurveyGroupID”:28,
“SurveyGroupTypeID”:4,
“被调查者”:23,
“SurveyGroupSequence”:1,
“调查问题顺序”:1,
“问题”:“您访问我们机构的原因是什么?”,
“数据类型名称”:“备忘录”,
“数据类型ID”:4,
“必需”:true
},
{
“SurveyGroupID”:28,
“SurveyGroupTypeID”:4,
“被调查者”:23,
“SurveyGroup序列”:2,
“调查问题顺序”:2,
“问题”:“你的身高是多少?”,
“DataTypeName”:“字符串”,
“数据类型ID”:2,
“必需”:true
},
{
“SurveyGroupID”:28,
“SurveyGroupTypeID”:4,
“被调查者”:23,
“SurveyGroupSequence”:1,
“调查问题顺序”:3,
“问题”:“你的体重是多少?”,
“DataTypeName”:“整数”,
“数据类型ID”:3,
“必需”:true
},
]

groupByID(数据)
您可以这样做

const surveyGroupTypeMap={};
data.forEach({SurveyGroupTypeID,Question})=>{
if(surveyGroupTypeMap[SurveyGroupTypeID]){
surveyGroupTypeMap[SurveyGroupTypeID]。推送(问题);
}否则{
surveyGroupTypeMap[SurveyGroupTypeID]=[问题];
}
});
常量结果=[];
key(surveyGroupTypeMap).forEach(id=>{
结果:推({
字段:surveyGroupTypeMap[id].map(问题=>({
SurveyGroupTypeID:id,问题:问题
}))
});
});
控制台日志(结果);

您可以这样做

const surveyGroupTypeMap={};
data.forEach({SurveyGroupTypeID,Question})=>{
if(surveyGroupTypeMap[SurveyGroupTypeID]){
surveyGroupTypeMap[SurveyGroupTypeID]。推送(问题);
}否则{
surveyGroupTypeMap[SurveyGroupTypeID]=[问题];
}
});
常量结果=[];
key(surveyGroupTypeMap).forEach(id=>{
结果:推({
字段:surveyGroupTypeMap[id].map(问题=>({
SurveyGroupTypeID:id,问题:问题
}))
});
});
控制台日志(结果);
    const ar1 = [];
    data.forEach((Element, index) => {
      const fields = [{
        "SurveyGroupTypeID": Element.SurveyGroupTypeID,
        "Question": Element.Question
      }]
      ar1.push({
        fields : fields
      })
    })