当前位置: 首页 > news >正文

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两个字段来构建一个唯一的keyconst 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得出的二维数组

相关文章:

  • 1.2.1 HuggingFists安装说明-Linux安装
  • 如何用Prometheus监控禁用了Actuator的SpringBoot?
  • 渗透测试--文件上传常用绕过方式
  • Python编码系列—Python责任链模式:打造灵活的请求处理流程
  • 鸿蒙HarmonyOS之封装Http请求工具类
  • Llama微调以及Ollama部署
  • MRC接收机
  • 【数字图像处理】小白也能懂,最浅显方式手撕直方图均衡化(附python实现)
  • python 02 List
  • 药物临床试验机构备案信息数据库查询方法(支持数据下载)
  • Git常用方法——详解
  • 防止电脑电池老化,禁止usb或者ac接口调试时充电
  • STM32CubeMX工程printf问题
  • 什么是 Angular 开发中的 Dumb components
  • 【Git】克隆主项目,并同时克隆所有子模块
  • 【Leetcode】104. 二叉树的最大深度
  • jdbc就是这么简单
  • Joomla 2.x, 3.x useful code cheatsheet
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SpringBoot几种定时任务的实现方式
  • SQLServer之创建数据库快照
  • Travix是如何部署应用程序到Kubernetes上的
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 分类模型——Logistics Regression
  • 前端路由实现-history
  • 如何利用MongoDB打造TOP榜小程序
  • 如何在GitHub上创建个人博客
  • 数据仓库的几种建模方法
  • 说说动画卡顿的解决方案
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #php的pecl工具#
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (1)(1.9) MSP (version 4.2)
  • (C语言)二分查找 超详细
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (libusb) usb口自动刷新
  • (第30天)二叉树阶段总结
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (九)c52学习之旅-定时器
  • (七)Java对象在Hibernate持久化层的状态
  • (十五)、把自己的镜像推送到 DockerHub
  • (转)c++ std::pair 与 std::make
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net dataexcel winform控件 更新 日志
  • .Net IOC框架入门之一 Unity
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NetCore部署微服务(二)
  • .NetCore项目nginx发布
  • @RequestBody与@ModelAttribute
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [2010-8-30]
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决