vue数组根据某些条件进行二次切割

原本的一个一维数组首先

1.根据depnm和bed的不同会分成不同的数组

2.在条件1的基础上分割出来的数组如果存在里面有isBgn==1的会进行二次分割

比如原数组是[{depnm:1,bed:2,isBgn:0},{}……]

根据条件一会组成一个二维数组得到

[

[①depnm值一致的一个一维数组],

[②bed值一致的一个一维数组],

[③另一个depnm值一致的一个一维数组],//即存在有多种depnm的情况

]

根据条件2在1的基础上二次切割会得到

[

[下标为0~isBgn==1的下标的值的前一个值],//①depnm值一致的一个一维数组

[下标为isBgn==1的下标的值~最后一值],//①depnm值一致的一个一维数组

[②bed值一致的一个一维数组],

[③另一个depnm值一致的一个一维数组],

]

比如①depnm值一致的一个一维数组有10个值,这个数组里面第三个值是isBgn==1,那这个数组会分成两个数组,第一个数组是0-2,第二个数组是3-10

  let obj = {}; // 初始化一个空对象来存储分组后的数据

          res.data.data.forEach((item) => {
            // 使用depnm和bed两个字段来构建一个唯一的key
            const key = `${item['depnm']}-${item['bed']}`;
            
            // 如果这个key在obj中已经存在,则把当前item添加到对应的数组中
            // 如果不存在,则创建一个新的数组,并把当前item添加到这个数组中
            obj[key] ? obj[key].push(item) : (obj[key] = [item]);
          });

          // 将obj的values(即分组后的数组)转换为数组,并赋值给this.info
          // this.info = Object.values(obj);

          this.info=[]
          Object.values(obj).forEach(v=>{
            let indexArr=[0]
            let result=[]
            v.forEach((item,index)=>{
              if(item.isBgn==1&&index!==0){
                indexArr.push(index)
              }
            })
            indexArr.push(v.length)

            // 遍历下标数组,根据相邻下标切割原数组
            for (let i = 0; i < indexArr.length - 1; i++) {
              let start = indexArr[i];
              let end = indexArr[i + 1];
              result.push(v.slice(start, end));
            }
            this.info.push(...result)
          })

res.data.data是最原始的一维数组

Object.values(obj)是条件1得出的二维数组

this.info就是最后条件2得出的二维数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值