065:vue中将一维对象数组转换为二维对象数组

在这里插入图片描述

第065个

查看专栏目录: VUE ------ element UI


专栏目标

在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。

(1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeMount,mounted, beforeUpdate,updated, beforeDestroy,destroyed,activated,deactivated,errorCaptured,components,)、 $root , $parent , $children , $slots , $refs , props, $emit , eventbus ,provide / inject, Vue.observable, $listeners, $attrs, $nextTick , v-for, v-if, v-else,v-else-if,v-on,v-pre,v-cloak,v-once,v-model, v-html, v-text, keep-alive,slot-scope, filters, v-bind,.stop, .native, directives,mixin,render,国际化,Vue Router等

(2)提供element UI的经典操作:安装,引用,国际化,el-row,el-col,el-button,el-link,el-radio,el-checkbox ,el-input,el-select, el-cascader, el-input-number, el-switch,el-slider, el-time-picker, el-date-picker, el-upload, el-rate, el-color-picker, el-transfer, el-form, el-table, el-tree, el-pagination,el-badge,el-avatar,el-skeleton, el-empty, el-descriptions, el-result, el-statistic, el-alert, v-loading, $message, $alert, $prompt, $confirm , $notify, el-breadcrumb, el-page-header,el-tabs ,el-dropdown,el-steps,el-dialog, el-tooltip, el-popover, el-popconfirm, el-card, el-carousel, el-collapse, el-timeline, el-divider, el-calendar, el-image, el-backtop,v-infinite-scroll, el-drawer等

本文章目录

    • 专栏目标
    • 示例背景
    • 示例效果图
    • 示例源代码

示例背景

在做vue项目时候,有的需求是将一维的对象数组转换成二维的对象数组,怎么操作呢? 在本示例中,按照时间的划分,将一维对象数组转化为二维对象数组。第一维度的内容是时间,第二纬度的内容是一维数组中的某一项。

示例效果图

在这里插入图片描述

示例源代码

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-01-12
*/

<template>
	<div class="djs-box">
		<div class="topBox">
			<h3>vue项目中 将一维对象数组转换为二维对象数组 </h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
			<h4>
				<el-button @click="go()" type="primary" size="mini"> 转换数据</el-button>
			</h4>
		</div>
		<div class="dajianshi">
			<div class="left">
				<h4>变换后的一维数组</h4>
				<p v-for="(item,index) in arr1" :key="index"> 时间:{{item.time}}- 年份:{{item.year}}- 原索引:{{item.indexId}}
				</p>
			</div>

			<div class="right">
				<h4>变成二维数组</h4>
				<div v-for="(item1,index1) in arr2" :key="index1"> ● 时间:{{item1.time}}
					<div v-for="(item2,index2) in item1.children" :key="index2" class="lh30">
						&nbsp;&nbsp;&nbsp;&nbsp; 内容:{{item2.info}}-代号-{{item2.code}} -- 原索引:{{item2.indexId}}-时间:{{item2.time}}
					</div>
				</div>
			</div>

		</div>

	</div>
</template>

<script>
	export default {
		data() {
			return {
				arr: [{
						'time': '2023-12-07',
						'code': 'S10',
						'gname': 'G10',
						'info': '大剑师1'
					},
					{
						'time': '2023-12-07',
						'code': 'S10',
						'gname': 'G10',
						'info': '大剑师2'
					},
					{
						'time': '2023-12-07',
						'code': 'S11',
						'gname': 'G11',
						'info': '大剑师3'
					},
					{
						'time': '2023-12-08',
						'code': 'S10',
						'gname': 'G10',
						'info': '大剑师4'
					},
					{
						'time': '2023-12-08',
						'code': 'S11',
						'gname': 'G11',
						'info': '大剑师5'
					},
					{
						'time': '2023-12-09',
						'code': 'S12',
						'gname': 'G12',
						'info': '大剑师6'
					}
				],
				arr1: [],
				arr2: [],
			}
		},
		mounted() {
			this.arr1 = this.dajianshi_arr1to1(this.arr)
		},

		methods: {
			go() {

				this.arr2 = this.dajianshi_arr1to2(this.arr1)
				console.log(this.arr2)
			},
			dajianshi_arr1to1(arr) {
				let newArr = arr.map((item, index) => {
					return {
						...item,
						indexId: index,
						year: item.time.substr(0, 4),
					}
				})
				return newArr;
			},

			dajianshi_arr1to2(arr) {
				let keys = Object.keys(arr[0])
				let level1 = 'time' //获取一级属性名称
				let list = Array.from(new Set(
					arr.map(item => {
						return item[level1]
					})))
				let subList = []
				list.forEach(res => {
					arr.forEach(ele => {
						if (ele[level1] === res) {
							let nameArr = subList.map(item => item.time)
							if (nameArr.indexOf(res) !== -1) {
								subList[nameArr.indexOf(res)].children.push({
									...ele
								})

			  	        	} else {
								subList.push({
									time: res,
									// label: res,
									children: [{
											...ele										
									}]
								})
							}
						}
					})

				})
				return subList
			}

		}
	}
</script>
<style scoped>
	.djs-box {
		width: 1000px;
		height: 680px;
		margin: 50px auto;
		border: 1px solid peru;
	}

	.topBox {
		margin: 0 auto 0px;
		padding: 10px 0 20px;
		background: peru;
		color: #fff;
	}

	.dajianshi {
		width: 98%;
		height: 480px;
		margin: 5px auto 0;
	}
    .lh30{ line-height: 30px;}
	.left {
		width: 50%;
		height: 100%;
		float: left;
		overflow-y: auto;
		background: #fed;
	}

	.right {
		width: 50%;
		height: 100%;
		float: left;
		overflow-y: auto;
		background: #edc;
		text-align: left;
		padding-left: 15px;
		box-sizing: border-box;
	}
</style>


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

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

相关文章

Sqoop入门指南:安装和配置

Sqoop是一个强大的工具&#xff0c;用于在Hadoop和关系型数据库之间高效传输数据。在本篇文章中&#xff0c;将深入探讨如何安装和配置Sqoop&#xff0c;以及提供详细的示例代码。 安装Java和Hadoop 在开始安装Sqoop之前&#xff0c;首先确保已经成功安装了Java和Hadoop。Sqo…

第十四章JSON

第十四章JSON 1.什么是JSON2.JSON的定义和访问3.JSON在JavaScript中两种常用的转换方式4.JavaBean和JSON的相互转换5.List集合和JSON的相互转换6.map集合和JSON的相互转换 1.什么是JSON 2.JSON的定义和访问 JSON的定义 JSON的类型是一个Object类型 JSON的访问 我们要…

轮询定时器 清除 + vue2.0

需求? Gin Vue Element UI框架中, 我的大屏可视化项目, 大屏页面, 里边写了多个轮询定时器. 离开页面需要清理掉, 要不然切换路由还会在后台运行, 页面是自动缓存状态, 也不存在销毁一说了 所以通过路由router配置中, 页面路由监听中, 进行监听路由变化, 但是也没生效 …

屏幕截图编辑工具Snagit中文

Snagit是一款优秀的屏幕、文本和视频捕获与转换程序。它能够捕获屏幕、窗口、客户区窗口、最后一个激活的窗口或用鼠标定义的区域&#xff0c;并支持BMP、PCX、TIF、GIF或JPEG格式的保存。Snagit还具有自动缩放、颜色减少、单色转换、抖动等功能&#xff0c;并能将捕获的图像转…

安达发|APS排程系统之产品相似规则

APS排程系统是一种广泛应用于制造业的智能生产计划和调度工具&#xff0c;它能够帮助企业实现生产过程的优化、提高生产效率和降低生产成本。在APS排程系统中&#xff0c;相似产品规则是一种非常重要的功能&#xff0c;它可以帮助企业更好地管理和控制生产过程中的各种相似产品…

【微服务】日志搜集elasticsearch+kibana+filebeat(单机)

日志搜集eskibanafilebeat&#xff08;单机&#xff09; 日志直接输出到es中&#xff0c;适用于日志量小的项目 基于7.17.16版本 主要配置在于filebeat&#xff0c; es kibana配置改动不大 环境部署 es kibana单机环境部署 略 解压即可 常见报错&#xff0c;百度即可。 记录…

大模型关于Lora论文集合

《Chain of LoRA:Efficient Fine-tuning of Language Models via Residual Learning》 Chain of LoRA (COLA)&#xff0c;这是一种受 Frank-Wolfe 算法启发的迭代优化框架&#xff0c;旨在弥合 LoRA 和全参数微调之间的差距&#xff0c;而不会产生额外的计算成本或内存开销。CO…

【AI视野·今日Sound 声学论文速览 第四十五期】Wed, 10 Jan 2024

AI视野今日CS.Sound 声学论文速览 Wed, 10 Jan 2024 Totally 12 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Masked Audio Generation using a Single Non-Autoregressive Transformer Authors Alon Ziv, Itai Gat, Gael Le Lan, Tal Remez, Felix…

智能分析网关V4方案:太阳能+4G+AI识别搭建智慧果园/种植园远程视频监控监管方案

一、方案背景 我国是水果生产大国&#xff0c;果园种植面积大、产量高。由于果园的位置大都相对偏远、面积较大、看守人员较少&#xff0c;值守的工作人员无法顾及园区每个角落&#xff0c;果园财产安全成为了关注的重点。人为偷盗、野生生物偷吃等事件时有发生&#xff0c;并…

【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C复习系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…

详细分析Java中的分布式任务调度框架 XXL-Job

目录 前言1. 基本知识2. Demo3. 实战 前言 可视化任务调度 可视化配置 1. 基本知识 在Java中&#xff0c;分布式任务调度框架 XXL-Job 是一个开源的分布式任务调度平台&#xff0c;用于实现分布式系统中的定时任务调度和分布式任务执行。 下面是关于XXL-Job的一些概念、功…

C#用string.Replace方法批量替换某一类字符串

目录 一、关于字符串及其操作常识 二、String.Replace 方法 1.重载 2.Replace(Char, Char) 3.Replace(String, String) &#xff08;1&#xff09;实例&#xff1a; &#xff08;2&#xff09;生成结果&#xff1a; 4.Replace(String, String, StringComparison) 5.…

Ubuntu20.04下A-LOAM配置安装及测试教程(包含报错问题踩坑)

参考文章&#xff1a; ubuntu20.04下ros运行A-LOAM Ubuntu20.04下运行LOAM系列&#xff1a;A-LOAM、LeGO-LOAM、SC-LeGO-LOAM、LIO-SAM 和 LVI-SAM 需要学习源码的同学可以下载LOAM论文 LOAM论文链接 1.需要安装的库文件 1.1Eigen 3.3 可以直接使用apt命令安装&#xff0c;或…

【GO语言依赖】Go语言依赖管理简述

在运行环境中&#xff0c;遭遇报错&#xff0c;显示找不到函数 经过研究后发现需要进行依赖管理&#xff0c;进行如下操作后解决&#xff1a; 起源 最早的时候&#xff0c;Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如…

VS中动态库的创建和调用

VS中动态库的创建和调用 库 ​ 库是写好的现有的&#xff0c;成熟的&#xff0c;可以复用的代码。库的存在形式本质上来说库是一种可执行代码的二进制。 ​ 库有两种&#xff1a;静态库&#xff08;.a、.lib&#xff09;和动态库&#xff08;.so、.dll&#xff09;。所谓静态…

VUE指令(一)

vue会根据不同的指令&#xff0c;针对不同的标签实现不同的功能。指令是带有 v- 前缀的特殊标签属性。指令的职责是&#xff0c;当表达式的值改变时&#xff0c;将其产生的连带影响&#xff0c;响应式地作用于 DOM。 1、v-text&#xff1a;设置元素的文本内容&#xff0c;不会解…

Vulnhub-HACKSUDO: PROXIMACENTAURI渗透

文章目录 一、前言1、靶机ip配置2、渗透目标3、渗透概括 开始实战一、信息获取二、端口敲门三、web密码爆破四、getShell五、获取新用户六、提权 一、前言 由于在做靶机的时候&#xff0c;涉及到的渗透思路是非常的广泛&#xff0c;所以在写文章的时候都是挑重点来写&#xff0…

TypeScript类型挑战:实现内置的Omit实用类型

掌握 TypeScript Omit 泛型&#xff0c;一起完成 Type 挑战&#xff0c;巩固 TypeScript 知识。 为了帮助读者更好地巩固 TypeScript 的知识&#xff0c;我从 Github 上的 type-challenges 库中选择了几十个挑战&#xff0c;与您一起完成类型挑战。 挑战 实现内置的 Omit&…

初识Ubuntu

其实还是linux操作系统 命令都一样 但是在学习初级阶段&#xff0c;我还是将其分开有便于我的学习和稳固。 cat 查看文件 命令 Ubuntu工作中经常是用普通用户&#xff0c;在需要时才进行登录管理员用户 sudn -i 切换成管理用户 我们远程连接时 如果出现 hostname -I没有出现…

什么是数字身份?

数字身份是指代表在线实体的数据集合。数字身份可以代表用户、组织或电子设备&#xff0c;由他们的帐户、凭证、证书、行为和使用模式组成。在身份访问管理&#xff08;IAM&#xff09;中&#xff0c;需要数字身份来对用户进行身份验证并授予他们访问敏感数据的权限。 数字身份…