数组对象提取相同的属性值

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()的返回值为一个包含对象自身的所有可枚举属性值的数组

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值