javascript - nodejs中的数组数据结构
问题描述
我正在开发一个nodejs项目,我需要在其中重组一组对象。下面是我从数据库中获得的示例输出,需要对其进行重组。
"data": [
{
"ObtainedMarks": null,
"ObtainNumText": "1",
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Session",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "2020-01-01",
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Start date ",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "2020-01-01",
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "End date ",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "ahmedabad",
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Overall Feeling",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "high light",
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Highlights",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "low light",
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Lowlights",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": 1,
"ObtainNumText": null,
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Program rating(0-10)",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": 1,
"ObtainNumText": null,
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Venue rating(0-10)",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "photo",
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Program photos",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "video",
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Program videos",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": 10,
"ObtainNumText": null,
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "No. of Participants present",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": 8,
"ObtainNumText": null,
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "No. of Participants fees paid",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": 80,
"ObtainNumText": null,
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Total fees received",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "2020-01-01",
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Next program date",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "program remark",
"RefID": 312,
"EmpID": 1613,
"ChapterNameEnglish": "Remarks",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "1",
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Session",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "2020-01-01",
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Start date ",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "2020-01-08",
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "End date ",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "ap",
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Overall Feeling",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "ap",
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Highlights",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "ap",
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Lowlights",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": 10,
"ObtainNumText": null,
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Program rating(0-10)",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": 10,
"ObtainNumText": null,
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Venue rating(0-10)",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "ap",
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Program photos",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "ap",
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Program videos",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": 10,
"ObtainNumText": null,
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "No. of Participants present",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": 10,
"ObtainNumText": null,
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "No. of Participants fees paid",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": 10,
"ObtainNumText": null,
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Total fees received",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "2020-01-08",
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Next program date",
"EmpName": "Oasis Center User"
},
{
"ObtainedMarks": null,
"ObtainNumText": "testing",
"RefID": 1315,
"EmpID": 1613,
"ChapterNameEnglish": "Remarks",
"EmpName": "Oasis Center User"
}
]
}
以上是我从数据库中得到的结果。数据需要以这种方式结构化......
0: {
"EmpName": "Oasis Center User"
"RefID": 312,
{
"ObtainedMarks": null,
"ObtainNumText": "1",
"EmpID": 1613,
"ChapterNameEnglish": "Session",
},
{
"ObtainedMarks": null,
"ObtainNumText": "2020-01-01",
"EmpID": 1613,
"ChapterNameEnglish": "Start date ",
},
{
"ObtainedMarks": null,
"ObtainNumText": "2020-01-01",
"EmpID": 1613,
"ChapterNameEnglish": "End date ",
},
{
"ObtainedMarks": null,
"ObtainNumText": "ahmedabad",
"EmpID": 1613,
"ChapterNameEnglish": "Overall Feeling",
},
{
"ObtainedMarks": null,
"ObtainNumText": "high light",
"EmpID": 1613,
"ChapterNameEnglish": "Highlights",
},
{
"ObtainedMarks": null,
"ObtainNumText": "low light",
"EmpID": 1613,
"ChapterNameEnglish": "Lowlights",
},
{
"ObtainedMarks": 1,
"ObtainNumText": null, "EmpID": 1613,
"ChapterNameEnglish": "Program rating(0-10)",
},
{
"ObtainedMarks": 1,
"ObtainNumText": null,
"EmpID": 1613,
"ChapterNameEnglish": "Venue rating(0-10)",
},
{
"ObtainedMarks": null,
"ObtainNumText": "photo",
"EmpID": 1613,
"ChapterNameEnglish": "Program photos",
},
{
"ObtainedMarks": null,
"ObtainNumText": "video",
"EmpID": 1613,
"ChapterNameEnglish": "Program videos", },
{
"ObtainedMarks": 10,
"ObtainNumText": null,
"EmpID": 1613,
"ChapterNameEnglish": "No. of Participants present",
},
{
"ObtainedMarks": 8,
"ObtainNumText": null,
"EmpID": 1613,
"ChapterNameEnglish": "No. of Participants fees paid",
},
{
"ObtainedMarks": 80,
"ObtainNumText": null,
"EmpID": 1613,
"ChapterNameEnglish": "Total fees received",
},
{
"ObtainedMarks": null,
"ObtainNumText": "2020-01-01",
"EmpID": 1613,
"ChapterNameEnglish": "Next program date",
},
{
"ObtainedMarks": null,
"ObtainNumText": "program remark",
"EmpID": 1613,
"ChapterNameEnglish": "Remarks",
},
},
.
.
.
.
我是nodejs环境的新手,如何在nodejs中实现这一点....?
解决方案
我仍然不确定您想如何在此处对数据进行分组。也许你可以做这样的事情:
data=[ { "ObtainedMarks": null, "ObtainNumText": "1", "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Session", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "2020-01-01", "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Start date ", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "2020-01-01", "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "End date ", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "ahmedabad", "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Overall Feeling", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "high light", "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Highlights", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "low light", "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Lowlights", "EmpName": "Oasis Center User" }, { "ObtainedMarks": 1, "ObtainNumText": null, "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Program rating(0-10)", "EmpName": "Oasis Center User" }, { "ObtainedMarks": 1, "ObtainNumText": null, "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Venue rating(0-10)", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "photo", "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Program photos", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "video", "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Program videos", "EmpName": "Oasis Center User" }, { "ObtainedMarks": 10, "ObtainNumText": null, "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "No. of Participants present", "EmpName": "Oasis Center User" }, { "ObtainedMarks": 8, "ObtainNumText": null, "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "No. of Participants fees paid", "EmpName": "Oasis Center User" }, { "ObtainedMarks": 80, "ObtainNumText": null, "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Total fees received", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "2020-01-01", "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Next program date", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "program remark", "RefID": 312, "EmpID": 1613, "ChapterNameEnglish": "Remarks", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "1", "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Session", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "2020-01-01", "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Start date ", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "2020-01-08", "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "End date ", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "ap", "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Overall Feeling", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "ap", "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Highlights", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "ap", "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Lowlights", "EmpName": "Oasis Center User" }, { "ObtainedMarks": 10, "ObtainNumText": null, "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Program rating(0-10)", "EmpName": "Oasis Center User" }, { "ObtainedMarks": 10, "ObtainNumText": null, "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Venue rating(0-10)", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "ap", "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Program photos", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "ap", "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Program videos", "EmpName": "Oasis Center User" }, { "ObtainedMarks": 10, "ObtainNumText": null, "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "No. of Participants present", "EmpName": "Oasis Center User" }, { "ObtainedMarks": 10, "ObtainNumText": null, "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "No. of Participants fees paid", "EmpName": "Oasis Center User" }, { "ObtainedMarks": 10, "ObtainNumText": null, "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Total fees received", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "2020-01-08", "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Next program date", "EmpName": "Oasis Center User" }, { "ObtainedMarks": null, "ObtainNumText": "testing", "RefID": 1315, "EmpID": 1613, "ChapterNameEnglish": "Remarks", "EmpName": "Oasis Center User" } ]
var result = data.reduce((acc, {EmpID,RefID,...rest})=>{
acc[EmpID]=acc[EmpID] || { EmpID };
acc[EmpID][RefID] = acc[EmpID][RefID] || { EmpName:rest.EmpName,RefID,data:[] };
acc[EmpID][RefID].data.push(rest);
return acc;
},{});
console.log(result);
推荐阅读
- python - 如何获取文本文件的一列
- angular - 错误:Angular JIT 编译失败:'@angular/compiler' 未加载!在使用 AOT 在 Angular 9 中创建动态组件时
- ruby-on-rails - 将文件夹参数添加到 Rails 简单表单上传
- php - 在 php 中显示 youtube 的私人视频
- ubuntu - guile-config 无法运行
- r - 如何在 simmer R 中设置初始队列长度(queue_count)?
- java - 通用记录到 POJO
- keyboard - 将键盘扫描代码解析为实际输入的字符
- mysql - 指定的密钥太长;使用 knex 的最大密钥长度为 767 字节
- c++ - OpenCV:findContours的结果无法填充