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得出的二维数组
原文地址:https://blog.csdn.net/weixin_52115201/article/details/142660096
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!