vue关于echarts后端返回格式取值方法

news2024/9/24 5:23:37

在vue中,接口返回如下数据:

data: {充电桩: [0, 0, 78], 红外摄像头: [0, 0, 0], 火焰探测器: [0, 1, 0], 烟雾传感器: [0, 1, 1], 限流保护器: [0, 0, 1]},

其中数组里第一个值应该放在data1,第二个放在data2,第三个放在data3,应该怎么做?

  garageHistogram() {
      //柱状图查询
      let param = {
        carrierId: this.project,
        indexCode: this.paramsForm.indexCode,
        start: this.paramsForm.startTime,
        end: this.paramsForm.endTime,
        granularity: this.paramsForm.granularity,
      };
      this.chartLoading = true;
      this.API.garageHistogram(param).then((res) => {
        this.chartLoading = false;
        if (res.code == 200) {
          let xAxis = [];
          let data1 = [];
          let data2 = [];
          let data3 = [];
          for (let i in res.data) {
            xAxis.push(i);
          }

          //取值部分
          xAxis.forEach((item, index) => {
            res.data[item].map((item_, index_) => {
              if (index_ == 0) {
                data1.push(item_);
              }
              if (index_ == 1) {
                data2.push(item_);
              }
              if (index_ == 2) {
                data3.push(item_);
              }
            });          
          });

          // Object.keys(res.data).forEach(key => {
          //   [data1, data2, data3] = res.data[key];
          //   console.log(key, data1, data2, data3);
          // });



          this.barChartOpt.nameList = xAxis;
          this.barChartOpt.data = [
            {
              name: "报警",
              list: data1,
            },
            {
              name: "故障",
              list: data2,
            },
            {
              name: "离线",
              list: data3,
            },
          ];
        }
      });
    },

 一、

可以使用解构赋值(destructuring assignment)将每个属性的值分配给不同的变量。例如,以下代码将“充电桩”数组的第一个元素分配给变量data1,第二个元素分配给变量data2,第三个元素分配给变量data3:

const { 充电桩: [data1, data2, data3], 红外摄像头: [...], 火焰探测器: [...], 烟雾传感器: [...], 限流保护器: [...] } = data;

这里,我们使用了对象解构赋值的语法,用花括号括起属性名,冒号后面是新的变量名,如果属性名和变量名相同,可以省略冒号。

注意,由于“充电桩”是一个中文字符串,所以我们需要使用冒号并将其包装在引号中,以便Vue不会把它解析为一个计算属性。

如果不确定每个属性名,可以使用Object.keys()获取对象的所有属性名,然后使用Array.reduce()或forEach()循环遍历它们并将它们解构到变量中。

Object.keys(data).forEach(key => {
  const [data1, data2, data3] = data[key];
  console.log(key, data1, data2, data3);
});

二、

在ECharts柱状图中使用时,可以使用Array.map()函数将原始数据映射为一个新数组,该数组仅包含每个属性的值。例如,以下代码将原始数据映射为一个数组,该数组包含每个属性的第一个元素:

const data1 = Object.keys(data).map(key => data[key][0]);

这里,我们使用Object.keys()获取对象的所有属性名,并使用Array.map()循环遍历它们。对于每个属性,我们获取其对应的数组,并将其第一个元素添加到一个新数组中。这将返回一个只包含每个属性的第一个元素的新数组。

您可以使用相同的方法,将第二个和第三个元素映射到另外两个数组中:

const data2 = Object.keys(data).map(key => data[key][1]);
const data3 = Object.keys(data).map(key => data[key][2]);

三、

这两种方法的作用是相同的,它们都可以从对象中提取数据并将其分别存储在三个不同的数组中。但是,它们的实现方式略有不同。

方法一使用了两个循环来遍历对象的属性和属性值,其中第二个循环使用了Array.map()来遍历属性对应的值的每个元素,并将每个元素添加到相应的数组中。这种方法的优点是它比较灵活,可以在处理每个元素时执行任何必要的操作,例如添加特定的前缀或后缀。但是,这种方法需要显式地检查每个元素的索引,以便将其正确地添加到相应的数组中。

方法二使用了单个循环来遍历对象的属性,并将每个属性对应的值解构为三个变量。这种方法的优点是它比较简洁,可以在一行代码中完成整个过程。但是,这种方法需要每个属性对应的值必须是一个数组,而且需要事先知道数组中元素的顺序。如果数组中的元素顺序发生变化,该方法就会失效。

因此,这两种方法的选择取决于您的具体情况和个人偏好。如果您需要对每个元素执行更多的操作,并且需要更大的灵活性,请使用方法一。如果您希望保持代码简洁,并且对数组元素的顺序有充分的了解,请使用方法二。

这两种方法有什么不同,方法一:  xAxis.forEach((item, index) => {
            res.data[item].map((item_, index_) => {
              if (index_ == 0) {
                data1.push(item_);
              }
              if (index_ == 1) {
                data2.push(item_);
              }
              if (index_ == 2) {
                data3.push(item_);
              }
            });          
          });
方法二: Object.keys(res.data).forEach(key => {
   [data1, data2, data3] = res.data[key];
  console.log(key, data1, data2, data3);
});

四、关于Object.keys

Object.keys()是一个内置函数,它返回一个对象的所有可枚举属性的属性名(键)组成的数组。可以用于枚举对象自身的属性,不会枚举对象原型链上的属性。

例如,如果有一个包含如下属性的对象:

const obj = {
  name: 'Tom',
  age: 25,
  gender: 'male'
};

那么使用Object.keys()将返回一个由属性名组成的数组:

const keys = Object.keys(obj); // ['name', 'age', 'gender']

您可以在循环中使用该数组,以便对每个属性执行相同的操作,例如:

keys.forEach(key => {
  console.log(key + ': ' + obj[key]);
});

这将输出:

name: Tom
age: 25
gender: male

请注意,Object.keys()返回的属性名数组的顺序与属性在对象中定义的顺序不一定相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LCHub:微软Power Apps成为保险行业最受欢迎低代码平台

全球领先的保险行业软件服务商Adacta发布了《保险行业低代码应用情况》报告,深度揭示了保险领域对低代码的应用、市场增长、发展趋势等。 该报告对来自德国、奥地利、瑞士、法国、英国、比利时、荷兰和卢森堡等国家的100名保险行业的高管进行了深度调查。(发送“保险低代码”…

社科院杜兰大学金融管理硕士项目——不要停止奔跑,前方更值得期待

不要停止奔跑,不要回顾来路,来路无可眷恋,唯有前方值得期待。——《马男波杰克》。这段话很适用在职的我们,当我们在职场经过打磨,我们被磨平了棱角,被磨掉了脾气,但我们依然相信前方会更值得我…

安装和部署elasticsearch

文章目录 一、安装elasticsearch1.1 部署单点elasticsearch1.1.1 创建网络1.1.2 安装镜像1.1.3 部署1.1.4 测试 1.2 部署kibana1.2.1 安装镜像1.2.2 部署1.2.3 测试1.2.4 DevTools工具 1.3 安装IK分词器1.3.1 安装ik插件1.3.2 查找数据卷目录1.3.3 上传至容器1.3.4 测试 一、安…

腾讯优图入选人工智能顶级会议AAAI论文--10篇

人工智能领域的国际顶级会议AAAI 2020将于2月7日-2月12日在美国纽约举办。近年来随着人工智能的兴起,AAAI每年举办的学术会议也变得越来越火热,每年都吸引了大量来自学术界、产业界的研究员、开发者投稿、参会。 以AAAI2019为例,论文提交数量…

工单管理系统的好处

工单管理系统是一款能够实现业务流程管理,工作任务管理,服务项目管理的工具。该系统能够帮助企业提高客户服务质量、加快企业服务响应速度、降低企业运营成本。 工单管理系统能通过制定计划和控制流程来减少客户投诉,提高客户满意度。可以说…

为什么安全从业者应该了解业务

不久之前,网络安全还被视为独立于企业其他部分的事物。但在过去的十年里,它终于得到了当之无愧、渴望已久的认可和关注。 越来越多的公司聘请首席信息安全官来帮助制定整体业务战略,使安全成为公司董事会的首要任务。 最后,首席…

k8s允许master节点参与调度的设置方法

默认情况下,master节点是不参与调度的,且在master节点上有一个污点NoSchedule(表示k8s将不会将Pod调度到具有该污点的Node上),有关污点章节可参考https://www.cnblogs.com/panw/p/16343392.html 如果想让master节点参与…

云原生可观测性平台deepflow部署

deepflow是什么 DeepFlow 是云杉网络 (opens new window)开源的一款高度自动化的可观测性平台,是为云原生应用开发者建设可观测性能力而量身打造的全栈、全链路、高性能数据引擎。DeepFlow 使用 eBPF、WASM、OpenTelemetry 等新技术,创新的实现了 AutoT…

界面控件DevExpress WinForm的垂直网格组件,让数据展示更灵活!(一)

DevExpress WinForm Vertical Grid(垂直网格)组件设计用于提供UI灵活性,它允许显示数据集中的单个行,或在其90度反向网格容器中显示多个数据集行。此外,开发者还可以将其用作属性网格,就像在Visual Studio …

逻辑回归与梯度下降法

逻辑回归:是用来进行分类的。 逻辑回归的线性预测输出可以写成:y^wTxb 引入Sigmoid函数,让输出限定在[0,1]之间,y^Sigmoid(wTxb)σ(wTxb) 单个样本损失函数:L(y^,y)−(ylog y^(1−y)log (1−y^)) 对逻辑回归进行梯度…

【pytorch系列】优化器optimizer的使用与常用优化器

1 optimizer类实例 1.1 介绍 属性 【default】该实例的类型为 dict,元素为初始化时候的学习率等,具体的keys为 [lr,momentum, dampening, weight_decay, nesterov]【state】保存参数更新过程中的一些中间变量,如momentum的缓存&#xff08…

网络安全-kali配置ssh服务+敏感文件泄+dirsearch脚本

网络安全-kali配置ssh服务敏感文件泄dirsearch脚本 seccure shell 就是加密的telnet 远程用的 service ssh start 开启ssh服务metstat -tpan |gerp 22 监听这个端口是否开启 可以看到本地的22端口这个文件是/etc/ssh/sshd_config 输入 set number 找到第57行 把这个前面的#注…

Smartbi电子表格软件产品的由来

思迈特软件(以下简称“Smartbi”)自2022年11月以来发布的「Smartbi Spreadsheet 电子表格软件」产品(以下简称“电子表格软件”或"Spreadsheet")。 这个软件就是报表工具,那为什么不叫 Report,而…

java 自习室找座系统 mysql

自习室座位管理系统采用B/S结构、结合网络数据库开发技术来设计本系统。开发语言采用JSP,数据库使用Mysql数据库。完成以下基本功能: 功能: 1界面(管理员登录、学生登录) 2管理员更新自习室剩余座位情况 3学生查询自习…

误差与精度

整理自《误差理论与数据处理》——合肥工业大学 机械专业用于教授学生误差与精度概念的课程叫做《公差与测量》,而公差的本质含义就是误差,所以这门课其本质教授的还是误差理论。当时在学校并没有好好学习这么课程,工作之后才发现这个课程的重…

云原生时代,不可不知的基础设施即代码(IaC)

💡 IaC 是 DevOps 的必要支撑。 近日,在极狐TechTalk 直播上,极狐(GitLab) 高级网站可靠性工程师SRE 戚加欣,从 SRE 视角出发,与大家分享了 IaC 基础知识、工具和方法和基于极狐GitLab 的具体实践经验。 以下内容整理自…

路由反射器、联邦

路由反射器 RFC4456 IBGP水平分割:路由器无法将从IBGP对等体学习到的路由信息传递给其他IBGP对等体。 IBGP水平分割解决了AS内部环路的问题,但是产生了新的问题----BGP路由在AS内部只能传递一跳,会造成lBGP路由无法被正常传递,造成通讯障碍。…

使用计算机视觉实战项目精通 OpenCV:6~8

原文:Mastering OpenCV with Practical Computer Vision Projects 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线…

Vue3PDF预览(vue3-pdf-app)

vue3-pdf-app 插件 可自定义设置以下属性: pdf地址(src),类型:string,必传,默认 预览容器宽度(width),类型:number | string,默认 …

数字化转型框架如何搭建?

根据GetSmarter对来自128个国家/地区的5808名专业人士进行关于数字化转型的调查,揭示了几个重要的发现。 首先是所有行业和工作角色对数字化转型的看法不同。它不仅仅专注于集成和利用新技术,例如机器学习(ML)、人工智能(AI)、大数据和自动化。它是关于…