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

在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()返回的属性名数组的顺序与属性在对象中定义的顺序不一定相同。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker学习

安装 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh为了防止后面权限有问题,执行下面这个 sudo groupadd docker sudo gpasswd -a $USER docker newgrp docker基本操作 获得镜像 docker pull hello-world运行 docker run hello-w…

蓝桥杯欲伸手CTF?有多远爬多远

注意:网络安全类比赛 或者说 CTF 参赛不会需要任何费用 只有国赛/省赛有可能会收取一定运维费用 其他比赛都不会收费 望周知。 先来看个特离谱的事情 早上起床看到几位师傅的朋友圈一脸懵,再仔细一看,好嘛。。。。。。 先看看探姬的回复 接下…

如何使用ChatGPT在1天内完成毕业论文

如何使用ChatGPT在1天内完成毕业论文 几天前,亲眼见证了到一位同学花了1天时间用ChatGPT完成了他的毕业论文,世道要变,要学会使用黑科技才能混的下去。废话到此结束,下面说明这么用AI生成自己的论文。 使用工具: 1. P…

VMware vSphere 8.0 Update 1 正式版发布 - 企业级工作负载平台

ESXi 8.0 U1 & vCenter Server 8.0 U1 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u1/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2023-04-18,VMware vSphere 8.0 Update 1 正式…

Excel技能之排名,小函数很强大

你还在熬夜加班搞Excel吗? 你还在用手指,指着电脑屏幕,一行一行核对数据吗? 你还在害怕被笑而不敢问同事吗? 赶紧来学Excel,收藏加关注,偷偷地进步!日积月累,必成大器&am…

ADIDAS阿里纳斯励志广告语

系列文章目录 精选优美英文短文1——Dear Basketball(亲爱的篮球)精选优美英文短文2——Here’s to the Crazy Ones(致疯狂的人)“我祝你不幸并痛苦”——约翰罗伯茨毕业致辞“亲爱的波特兰——CJ麦科勒姆告别信” Hi, I’m Gilb…

Java阶段二Day05

Java阶段二Day05 文章目录 Java阶段二Day05截至此版本可实现的流程图为V14UserControllerClientHandlerDispatcherServletHttpServletResponseHttpServletRequest V15DispatcherServletHttpServletResponseHttpServletRequest V16HttpServletRequestHttpServletResponse 反射JA…

【Linux网络服务】DNS域名解析服务服务

一、BIND域名服务基础 服务背景 1在日常生活中人们习惯使用域名访问服务器,但机器向互相只认IP地址,域名与IP地址之间是多对一的关系,一个IP址不一定只对应一个域名,且一个完成域名只可以对应一个IP地址,它们之间转换…

【数据结构】解析队列各接口功能实现

目录 前言: 一、队列概述: 1.队列的概念: 二、队列的各种接口功能实现: 1.初始化队列: 2.入队(尾插): 3.出队(头删): 4.查看队头&#xf…

PyTorch 深度学习实战 | 基于 ResNet 的花卉图片分类

“工欲善其事,必先利其器”。如果直接使用 Python 完成模型的构建、导出等工作,势必会耗费相当多的时间,而且大部分工作都是深度学习中共同拥有的部分,即重复工作。所以本案例为了快速实现效果,就直接使用将这些共有部…

YAML /Excel /CSV?自动化测试测试数据管理应用,测试老鸟总结...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试无论是…

ChatGPT实战100例 - (02) 自动出PPT它不香么?

文章目录 ChatGPT实战100例 - (02) 自动出PPT它不香么?一、需求与思路1. 需求:出个PPT,5分钟后要用2. 思路:生成markdown然后转化 二、生成markdown语法的思维导图1. 问题2. 回答 三、把markdown文本转换成PPT ChatGPT实战100例 -…

MIMO-OFDM无线通信技术(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 本代码为MIMO-OFDM无线通信技术及MATLAB实现。分为十章,供大家学习。 📚2 运行结果 主函数部分代码&a…

Mysql安装详细教程

数据库相关概念 而目前主流的关系型数据库管理系统的市场占有率排名如下: Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。 MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle…

逆向-还原代码之(*point)[4]和char *point[4] (Interl 64)

// source code #include <stdio.h> #include <string.h> #include <stdlib.h> /* * char (*point)[4] // 数组指针。 a[3][4] // 先申明二维数组,用它来指向这个二维数组 * char *point[4] // 指针数组。 a[4][5] // 一连串的指针…

知识点学习登记备份信息

知识点记录 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ovilnIi-1681441105895)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211228090433836.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上…

全景丨0基础学习VR全景制作,平台篇第五章:开场封面功能

大家好欢迎观看蛙色平台使用教程 开场封面功能&#xff0c;现已支持开场图片和开场视频两种呈现方式&#xff0c; 分别针对PC端和移动设备访问分别设置呈现图片、视频内容&#xff0c;满足市场主流需求。 开场图片 传达主旨 1、全局-开场封面-图片 2、分别对PC端和移动设备访…

【加载plist文件展示单组数据 Objective-C语言】

一、接下来,我们要为大家演示如何通过加载plist文件,使用UITableView展示单组数据, 1.最后运行起来的效果,是一个什么效果呢,是这样一个效果: 2.这个里面,这就是一个单元格吧, 这就是一个单元格, 这个单元格里面,包括一个图片框、一个TextLabel、一个DetailLabel、…

[CVPR 2020] Regularizing Class-Wise Predictions via Self-Knowledge Distillation

Contents IntroductionClass-wise self-knowledge distillation (CS-KD)Class-wise regularizationEffects of class-wise regularization ExperimentsClassification accuracy References Introduction 为了缓解模型过拟合&#xff0c;作者提出 Class-wise self-knowledge di…

3.rabbitmq-集群

1.修改3台的主机名称,也可以不改 vi /etc/hostname 2.配置各个节点的host文件,让各节点都能识别对方 vi /etc/hosts 192.168.3.132 host-rabbitmq 192.168.3.133 host-rabbitmq2 192.168.3.134 host-rabbitmq3 3.以确保各个节点的cookie文件使用的同一个值 在node1上执行远程命…