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

js遍历后端返回的集合将条件相同的放入同一个数组内

项目场景:

echarts折线图需要根据条件动态展示多条不同曲线


解决方案:

后端直接将使用sql将数据查询出来返回即可,因为我这里不是Java使用的C#不是很熟练后台不好写逻辑,所以在前端js完成的

代码如下:

 function createline(villagename, buildingname, unitname, roomname, startime, stoptime) {// console.log("roomname: "+roomname)//$("#demo").empty();var myChart = echarts.init(document.getElementById('demo'), myEchartsTheme);myChart.clear();var tempindoor = [],tempset = [],tempwaterin = [],tempwaterout = [];$.ajax({type: 'post',url: '../AJAXHandler.ashx',data: {"Method": "GetData","limit": 99999,"page": 1,"VillageName": villagename,"BuildingName": buildingname,"UnitName": unitname,"RoomName": roomname,"startime": startime,"stoptime": stoptime},success: function (res) {var xData = [];//console.log("res: "+res);var json = $.parseJSON(res);json = json.data;for (var i = 0; i < json.length; i++) {tempindoor.push(json[i].TMP_INDOOR);//console.log("tempindoor: "+tempindoor);tempset.push(json[i].TMP_SET);tempwaterin.push(json[i].TEMP_WATER_IN);tempwaterout.push(json[i].TEMP_WATER_OUT);xData.push(new Date(json[i].RTime).format('yyyy-MM-dd hh:mm:ss'));}
/**这里定义新的数组将查到的数据通过遍历存到新数组内,然后根据判断是否有相同的数据,如果没有就走if内的语句存入数组内,如果有相同的就走else内的语句,之后将数据存到map里根据条件去展示符合的数据,然后将这个map存到echarts渲染的部分的数组内 就可以做到动态展示了**/const result = [];json.forEach((item) => {const index = result.findIndex((r) => r.room === item.room);if (index === -1) {result.push({ room: item.room, names: [item.TMP_INDOOR] });} else {result[index].names.push(item.TMP_INDOOR);}});//console.log(result);const legend = result.map(item => item.room); // 图例const arr = result.map(item => ({ // 数据name: item.room,type: "line",data: item.names}));//手机适配if (window.screen.width < 1000) {var legends = {x: '100px',//data: ['室内温度',  '设定温度', '进水温度', '回水温度']data: ['室内温度'],textStyle: {color: '#009688'}};} else {var legends = {x: 'center',//data: ['室内温度',  '设定温度', '进水温度', '回水温度']data: ['室内温度'],textStyle: {color: '#009688'}};}var option = createoption('单位:℃', xData, legends, arr);myChart.setOption(option, true);//EChars图手机适配window.onresize = myChart.resize;},error: function () {//alert("折线图报错!");}});tempindoor = [], tempset = [], tempwaterin = [], tempwaterout = [];}

http://www.lryc.cn/news/270980.html

相关文章:

  • GcExcel:DsExcel 7.0 for Java Crack
  • 基于SpringBoot的职业生涯规划系统
  • 基于Java+SpringBoot+vue+elementui的校园文具商城系统详细设计和实现
  • PyTorch中常用的工具(5)使用GPU加速:CUDA
  • Qt+opencv 视频分解为图片
  • 一篇文章认识微服务的优缺点和微服务技术栈
  • [spark] dataframe的数据导入Mysql5.6
  • 2023年度业务风险报告:四个新风险趋势
  • python编程从入门到实践(1)
  • ElasticSearch 文档操作
  • NXOpenC++布尔求和命令
  • ubuntu python播放MP3,wav音频和录音
  • Rust学习笔记000 安装
  • python AI五子棋对战
  • 图文证明 费马,罗尔,拉格朗日,柯西
  • CEC2017(Python):粒子群优化算法PSO求解CEC2017(提供Python代码)
  • AUTOSAR从入门到精通- 虚拟功能总线(RTE)(一)
  • B/S架构云端SaaS服务的医院云HIS系统源码,自主研发,支持电子病历4级
  • 看懂基本的电路原理图(入门)
  • 赫夫曼树基本数据结构
  • 10TB海量JSON数据从OSS迁移至MaxCompute
  • LLM之RAG实战(九)| 高级RAG 03:多文档RAG体系结构
  • Windows电脑引导损坏?按照这个教程能修复
  • 记Android字符串资源支持的参数类型
  • Java实现树结构(为前端实现级联菜单或者是下拉菜单接口)
  • MySQL中常用的数据类型
  • HTML+CSS+JS制作三款雪花酷炫特效
  • [C#]使用ONNXRuntime部署一种用于边缘检测的轻量级密集卷积神经网络LDC
  • ZigBee案例笔记 - 无线点灯
  • Debezium日常分享系列之:向 Debezium 连接器发送信号