1、构建一个需要处理的json字符串
json1 = {
"ResultCode": "0",
"Count": "5",
"ReturnQty": "5",
"List": [{
"HisDocumentNo": "W5702089",
"HisSerilNo": "230551010032000072207050627609",
"PrescDateTime": "2022-07-05 15:05:12",
"ItemName": "单项补体测定(C1q)",
},
{
"HisDocumentNo": "W5702090",
"HisSerilNo": "230551010032000072207050627609",
"PrescDateTime": "2022-07-05 15:05:12",
"ItemName": "一次性使用静脉采血器",
},
{
"HisDocumentNo": "W5702093",
"HisSerilNo": "230551010032000072207050627609",
"PrescDateTime": "2022-07-05 15:05:12",
"ItemName": "全血细胞计数+五分类",
},
{
"HisDocumentNo": "W5702095",
"HisSerilNo": "230551010032000072207050627609",
"PrescDateTime": "2022-07-05 15:05:12",
"ItemName": "四肢多普勒血流图",
},
{
"HisDocumentNo": "W5702096",
"HisSerilNo": "230551010032000072207050627609",
"PrescDateTime": "2022-07-05 15:05:12",
"ItemName": "颅脑(脑组织)磁共振平扫",
},
{
"HisDocumentNo": "W5702095",
"HisSerilNo": "23055101003200007220705062760",
"PrescDateTime": "2022-07-05 15:05:12",
"ItemName": "四肢多普勒血流图",
},
{
"HisDocumentNo": "W5702096",
"HisSerilNo": "230551010032000072207050627609",
"PrescDateTime": "2022-07-05 15:05:12",
"ItemName": "颅脑(脑组织)磁共振平扫",
}
]
}
2、通过js代码实现数据的重构
// 定义一个对象来接收重新构造的数组
let dataInfo = {}
//通过map遍历json数据获取遍历后的数据
json1.List.map(item => {
let dataInfo1 = {}
//获取item里面的HisSerilNo属性的值
let { HisSerilNo } = item
if(!dataInfo[HisSerilNo]) {
// 构建一个新的对象
dataInfo[HisSerilNo] = {
HisSerilNo: HisSerilNo,
data: []
}
}
//给对象添加字段以及赋值
dataInfo1.ItemName = item.ItemName
dataInfo1.HisDocumentNo = item.HisDocumentNo
//将赋值好的对象push到dataInfo[HisSerilNo]的data数组里面
dataInfo[HisSerilNo].data.push(dataInfo1)
})
// 将处理好的数据通过Object.values返回成一个数组
let result = Object.values(dataInfo)
//遍历数组
result.forEach(item => {
console.info(item)
})
3、最后构造出来的对象数组
{
HisSerilNo: '230551010032000072207050627609',
data: [
{ ItemName: '单项补体测定(C1q)', HisDocumentNo: 'W5702089' },
{ ItemName: '一次性使用静脉采血器', HisDocumentNo: 'W5702090' },
{ ItemName: '全血细胞计数+五分类', HisDocumentNo: 'W5702093' },
{ ItemName: '四肢多普勒血流图', HisDocumentNo: 'W5702095' },
{ ItemName: '颅脑(脑组织)磁共振平扫', HisDocumentNo: 'W5702096' },
{ ItemName: '颅脑(脑组织)磁共振平扫', HisDocumentNo: 'W5702096' }
]
}
{
HisSerilNo: '23055101003200007220705062760',
data: [
{ ItemName: '四肢多普勒血流图', HisDocumentNo: 'W5702095'
}
]
}
Object.values()的返回值为一个包含对象自身的所有可枚举属性值的数组