对象数组变成一维数组,导出txt文件

假设对象数组格式为此

arr1: [{id: 1,title: '我是1目录',children: [{id: 11,title: '我是1-1目录',children: [{id: 111,title: '我是1-1-1目录',children: [],},],},],},{id: 2,title: '我是2目录',children: [{id: 21,title: '我是2-1目录',children: [],},],},],

页面如下

先在页面上添加按钮点击事件,事件函数如下

参数dataRef就是对象数组的格式

function exportTXT(dataRef) {let arrayChildren = [];arrayChildren.push(dataRef);let dimenData = flatten(arrayChildren);let fileData = [];dimenData.map((item) => {fileData.push(item.title);});const fileName = '导出文件.txt';const csvContent = fileData.map((row) => `${row}`).join('\n');const blob = new Blob([csvContent], { type: 'text/csv' });const url = URL.createObjectURL(blob);const link = document.createElement('a');link.href = url;link.download = fileName;document.body.appendChild(link);link.click();}function flatten(arr) {return [].concat(...arr.map((item) => [].concat(item, ...flatten(item.subitems))));}

结果:

详细代码如下(功能是展示树结构的目录 右键导出txt):

需要把treeData换成上面的数组

去掉这个代码

<template><div style="border: 1px solid rgb(23, 106, 150)"><div style="font-size: 16px; color: white; padding: 10px; background-color: rgb(23, 106, 150)">{{ title }}</div><a-tree :treeData="treeData"><template #title="{ key: treeKey, title, dataRef }"><a-dropdown :trigger="['contextmenu']"><span>{{ title }}</span><template #overlay><a-menu @click="({ key: menuKey }) => onContextMenuClick(treeKey, menuKey)"><a-menu-item key="1" @click="exportTXT(dataRef)">导出TXT</a-menu-item><a-menu-item key="2" @click="exportTXT(dataRef)">导出PDF</a-menu-item></a-menu></template></a-dropdown></template></a-tree></div>
</template><script>import { onMounted, reactive, toRefs } from 'vue';// import { saveAs } from 'file-saver';// import { exportJsonToExcel } from '@/vendors/Export2Excel.js';// import { writeFile } from 'fs-extra';export default {name: 'Index',props: ['title', 'treeData'],setup(props) {const data = reactive({treeData: props.treeData,});function exportTXT(dataRef) {let arrayChildren = [];arrayChildren.push(dataRef);let dimenData = flatten(arrayChildren);let fileData = [];dimenData.map((item) => {fileData.push(item.title);});const fileName = '导出文件.txt';const csvContent = fileData.map((row) => `${row}`).join('\n');const blob = new Blob([csvContent], { type: 'text/csv' });const url = URL.createObjectURL(blob);const link = document.createElement('a');link.href = url;link.download = fileName;document.body.appendChild(link);link.click();}function flatten(arr) {return [].concat(...arr.map((item) => [].concat(item, ...flatten(item.children))));}function handleSelect(val) {console.log('handleSelect', val);}function getRightMenuList(val) {console.log('getRightMenuList', val);}function exportPDF(val) {console.log('exportPDF', val);}function onContextMenuClick(treeKey, menuKey) {console.log(`treeKey: ${treeKey}, menuKey: ${menuKey}`);}return {...toRefs(data),getRightMenuList,handleSelect,exportTXT,exportPDF,onContextMenuClick,// exportToExcel,// flatten,};},};
</script><style scoped></style>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试)

接口测试与数据驱动 1简介 数据驱动测试&#xff0c;即是分离测试逻辑与测试数据&#xff0c;通过如excel表格的形式来保存测试数据&#xff0c;用测试脚本读取并执行测试的过程。 2 数据驱动与jmeter接口测试 我们已经简单介绍了接口测试参数录入及测试执行的过程&#xff0…

HNU-计算机网络-实验5(自选)-安全相关编程实验

计算机网络 课程综合实验安全相关编程实验&#xff08;RUST&#xff09; 计科210X 甘晴void 202108010XXX 【前言】 这个《课程综合实验》是21级开始新加的实验&#xff0c;之前都没有。具体的可以看实验指导书&#xff0c;是用的19级同学的毕设。我完成的这个实验需要一点点R…

25计算机考研408专业课复习计划

点击蓝字&#xff0c;关注我们 今天要分享的是25计算机考研408专业课复习计划。 以下内容供大家参考&#xff0c;大家要根据自己的复习情况进行适当调整。 统考与自命题 统考科目是指计算机学科专业基础综合&#xff08;408&#xff09;&#xff0c;满分150分&#xff0c;试…

【Kafka】Linux本地和Docker安装Kafka

目录 Linux本地安装kafkajava环境配置Zookeeper的安装配置Kafka的安装与配置生产与消费 Docker安装kafkaZookeeper安装Kafka安装 Linux本地安装kafka java环境配置 1、上传jdk-8u261-linux-x64.rpm到服务器并安装&#xff1a; rpm -ivh jdk-8u261-linux-x64.rpm2、配置环境变…

【Qt开发】初识Qt

文章目录 1. Qt的背景1.1 Qt是什么1.2 Qt的发展史1.3 Qt支持的平台 2. Qt开发环境的搭建2.1 Qt SDK下载2.2 Qt SDK的安装 3. 一个简单的Qt模板程序的创建4. Qt模板程序的代码讲解4.1 main.cpp4.2 widget.h4.3 widget.cpp4.4 widget.ui4.5 test_1_18.pro4.6 一些中间文件 5. Qt在…

ASP.NET Core 对象池化技术

写在前面 Microsoft.Extensions.ObjectPool 是 ASP.NET Core 基础结构的一部分&#xff0c;当对象的初始化成本较高&#xff0c;并且可能被频繁使用时&#xff0c;才适合采用对象池技术&#xff1b;被ObjectPool管理的对象不会进入垃圾回收&#xff0c;使用时通过由实例对象实…

手把手教你如何快速定位bug,如何编写测试用例,快来观摩......

手把手教你如何快速定位bug,如何编写测试用例,快来观摩......手把手教你如何快速定位bug,如何编写测试用例,快来观摩......作为一名测试人员如果连常见的系统问题都不知道如何分析&#xff0c;频繁将前端人员问题指派给后端人员&#xff0c;后端人员问题指派给前端人员&#xf…

解决Spring Boot跨域问题(配置JAVA类)

什么是跨域问题 跨域问题指的是不同端口之间&#xff0c;使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制&#xff0c;它是为了保证用户的安全&#xff0c;防止恶意网站窃取数据。 比如前端用的端口号为8081&#xff0c;后端用的端口号为8080&#xff0c;后…

IPv6--ACL6(IPv6访问控制列表--基本ACL6配置)

ACL基本原理 ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。 ACL的组成 ACL编号: 在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同,这个后面具体讲。 规则: 前面提到了,一个AC…

【开发必备】泳道图编辑工具及使用

1.什么是泳道图 事情的起因在与博主要和几位小伙伴一起开发一个小程序&#xff0c;那么涉及的人多时就需要用到需求文档这个玩意。然后博主当然要扛起写需求文档这项项目经理 &#xff08;牛马&#xff09;的职责了&#xff01; 然后&#xff0c;博主就发现需求文档中一个看似…

Shell 脚本实现自动启动程序、日志管理和定时任务监控

简介 本篇将通过Shell 脚本实现自动启动Java程序、日志管理和定时任务监控。脚本启动程序具灵活定制、可移植性和扩展性强的优点&#xff0c;可以根据需要添加额外的功能、配置选项和自定义行为&#xff0c;从而满足更具体的要求。 脚本编写 vim start_program.sh#!/bin/bas…

深度学习入门——卷积神经网络CNN基本原理+实战

CNN基本结构 ​ 卷积神经网络&#xff08;Convolutional Neural Network,CNN&#xff09;是深度学习技术中最基础的网络结构&#xff0c;模拟人脑工作&#xff0c;具备强大的特征学习能力。CNN结构主要由两部分组成&#xff1a;特征提取部分和分类部分\color{blue}{特征提取部…