数组对象按对象中的某个属性进行分类

 需要把代码段1中的数据结构处理成代码段2中的

代码段1:

 let arr = [
    {
        id:1,
      stage: '注册',
      val: 100
    },
           {
       id:2,

      stage: '发行',
      val: 200
    },
    {
        id:3,

      stage: '注册',
      val: 100
    }, {
        id:4,

      stage: '发行',
      val: 300
    }, {
        id:5,

      stage: '存续',
      val: 100
    },
    {
        id:6,

      stage: '注册',
      val: 100
    },
    {
        id:7,
      stage: '发行',
      val: 300
    },
    {
        id:8

      stage: '存续',
      val: 200
    }
  ]

 代码段2:

 let arr = [
    {
        stage: '注册',
        detailList:[
            {
                id:1,
                stage: '注册',
                val: 100,},
            {
                id:3,
                stage: '注册',
                val: 100
            }, 
        ]
    },{
        stage: '发行',
        detailList:[
            {
                id:1,
                stage: '发行',
                val: 100,},
            {
                id:3,
                stage: '发行',
                val: 100
            }, 
        ]
    },
  ]

方法:

<script setup>
  function dataProcessingArr(Array) {
    const c = []
    const d = {}
    Array.forEach(element => {
      if (!d[element.stage]) {
        c.push({
          stage: element.stage,
          detailList: [element]
        })
        d[element.stage] = element
      } else {
        c.forEach(ele => {
          if (ele.stage== element.stage) {
            ele.detailList.push(element)
          }
        })
      }
    })
    return c
  }
  let arr = [
    {
        id:1,
      stage: '注册',
      val: 100
    },
           {
       id:2,

      stage: '发行',
      val: 200
    },
    {
        id:3,

      stage: '注册',
      val: 100
    }, {
        id:4,

      stage: '发行',
      val: 300
    }, {
        id:5,

      stage: '存续',
      val: 100
    },
    {
        id:6,

      stage: '注册',
      val: 100
    },
    {
        id:7,
      stage: '发行',
      val: 300
    },
    {
        id:8

      stage: '存续',
      val: 200
    }
  ]

  let tagArr = dataProcessingArr(arr)
</script>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值