对象数组变成一维数组,导出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.mzph.cn/news/636859.shtml

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

相关文章

Kafka Connect: Debezium MySQL Connector 的 Partition 和 Replication 配置

使用 Kafka Connect 的 Debezium MySQL Connector 将 MySQL 数据库中的 CDC 数据写入 Kafka 时&#xff0c;在 Kafka 默认允许自动创建 Topic 的情况下&#xff0c;Kafka Connect 自动创建的 Topic 只有一个 Partition&#xff0c;在实际应用中&#xff0c;这显然是不行&#x…

gin中使用JWT

1.jwt使用 安装 go get github.com/golang-jwt/jwt/v4 默认Claim 如果我们直接使用JWT中默认的字段&#xff0c;没有其他定制化的需求则可以直接使用这个包中的和方法快速生成和解析token。 // 用于签名的字符串 var mySigningKey []byte("liwenzhou.com")// G…

【Spring 篇】MyBatis中的CRUD魔法:数据之美的四重奏

MyBatis&#xff0c;这个数据持久化的魔法师&#xff0c;以其优雅的SQL映射和简洁的配置文件&#xff0c;为我们呈现出一场CRUD&#xff08;Create, Read, Update, Delete&#xff09;的奇妙之旅。在这篇博客中&#xff0c;我们将深入探讨MyBatis中的增、删、改、查操作&#x…

溯流而上:从算盘到现代计算机——计算设备历史与关键人物的探索之旅

Tracing the Evolution: From Abacus to Modern Computers - An Exploratory Journey Through the History of Computing Devices and Key Figures 溯流而上&#xff1a;从算盘到现代计算机——计算设备历史与关键人物的探索之旅 Good day! Today, we embark on a fascinating …

linux基础学习(5):yum

yum是为了解决rpm包安装依赖性而产生的一种安装工具 1.yum源 1.1配置文件位置 yum源的配置文件在/etc/yum.repos.d/中 *Base源是网络yum源&#xff0c;也就是需要联网才能使用的yum源。默认情况下&#xff0c;系统会使用Base源 *Media源是光盘yum源&#xff0c;是本地yum源…

std::atomic

一、概述 std::atomic 是C11引入的一个模板类&#xff0c;用于提供原子操作的类型。在多线程编程中&#xff0c;当多个线程同时访问同一块数据时&#xff0c;可能会导致数据竞争和不确定的行为。std::atomic 可以用来创建原子类型的变量&#xff0c;保证对该变量的操作是原子的…

【leetcode】下一个排列 双指针算法

/*** param {number[]} nums* return {void} Do not return anything, modify nums in-place instead.*/ var nextPermutation function(nums) {const len nums.length;let i len -2;//找到第一个当前项比后一项小的位置iwhile(i>0&&nums[i]>nums[i1]) i--;if(…

(202401)深度强化学习基础2:策略梯度

文章目录 前言策略梯度1 基于价值算法的缺点2 策略梯度算法3 REINFORCE算法本章小结 前言 感谢Datawhale成员的开源本次学习内容的文档地址为 第九章 策略梯度 策略梯度 这个章节会开始介绍基于策略梯度的算法。前面的算法都是针对“奖励”或者说“回报&#xff08;reward&a…

章鱼网络 Community Call #17|打造全新 Omnity 跨链协议

香港时间2024年1月8日12点&#xff0c;章鱼网络举行第17期 Community Call。 对于 Octopus Community 而言&#xff0c;2023年是一个分水岭。我们如期兑现我们的承诺&#xff0c;成功上线了包括 $NEAR Restaking 和 Adaptive IBC 在内的完整的 Octopus 2.0。 自从我们在2023年…

9.2 工厂模式(❤)

9.2 工厂模式(❤) 1. 工厂模式介绍1.1 工厂模式1.2 简单工厂1.2.1 案例讲解: 购买电脑2. 工厂模式用途和特点3. 工厂模式项目应用1. 工厂模式介绍 1.1 工厂模式

HashMap原理

Java面试题 HashMap原理 HashMap是数组链表/红黑树结构&#xff0c;在put元素时会经过以下步骤&#xff1a; 1.先根据key的hashcode计算存储索引。 2.如果数组为空&#xff0c;则先执行resize进行扩容。 3.判断是否存在哈希冲突&#xff0c;如果没有则直接生成链表结构Node放入…

Java便捷访问的好处

便捷访问有以下几个好处&#xff1a; 提高效率&#xff1a;便捷访问可以减少查找和获取信息所需的时间和努力&#xff0c;从而提高工作和生活效率。 增强用户体验&#xff1a;提供便捷访问可以使用户感到方便和满意&#xff0c;从而增强他们对产品或服务的体验。 增加使用频率…

springcloud gateway正确路由配置 uri找不到服务?

引言 在集成nacos组件以及springcloudalibaba 的gateway时&#xff0c;出现正确配置&#xff0c;如下文配置&#xff0c;却在测试demo调用该服务的时候&#xff0c;无法路由到此服务&#xff0c;说是无效服务。经过查阅资料得知其命名不符合gateway的命名规范&#xff0c;因而…

Http三种常见状态码的区别(401、403、500)

一、解释 401 Unauthorized&#xff08;未经授权&#xff09;&#xff1a;表示请求需要进行身份验证&#xff0c;但客户端未提供有效的身份验证凭据。通常&#xff0c;当用户尝试访问需要身份验证的资源时&#xff0c;服务器会返回401状态码&#xff0c;以提示客户端提供有效的…

万界星空科技mes系统可以为企业带来什么好处

随着信息技术的不断发展&#xff0c;MES生产制造系统的作用不断凸显。万界星空科技MES生产制造可以为企业带来四个方面的好处&#xff1a;提升生产效率、降低生产成本、优化生产过程、提高生产质量。本文将从这四个方面分别进行详细阐述&#xff0c;旨在通过对MES生产制造系统的…

动态规划汇总

作者推荐 视频算法专题 简介 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。每次决策依赖于当前状态&#xff0c;又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的&#x…

C#调用C++ dll异常排查

基本情况 最近在做的一款程序&#xff0c;长时间运行总会出现莫名的问题。有时是自动关闭&#xff0c;有时程序报错&#xff0c;有时调用的dll异常…… 提出假设——dll内存泄漏 由于开始与C组合作时&#xff0c;使用其提供的dll出现过数据读写时异常&#xff08;内存操作异常…

线程的创建与回收

目录 一、线程的创建 进程&#xff1a; 线程&#xff1a; 线程特点&#xff1a; 一个进程中的多个线程共享以下资源&#xff1a; 每个线程私有的资源包括&#xff1a; Linux线程库&#xff1a; 线程创建-pthread_create 二、线程的参数传递 线程结束-pthread_exit 线程查…

【论文解读】LERF:语言嵌入的辐射场(ICCV 2023 Oral)

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2303.09553 项目主页&#xff1a;https://lerf.io](https://lerf.io 图 1&#xff1a;语言嵌入辐射场 (LERF)。 LERF 将 CLIP 表示建立在密集、多尺度的 3D 场中。…

Oracle SQL Developer执行sql脚本文件

文件过于大&#xff0c;无法打开&#xff0c;直接在界面执行。 ①将文件放置到D盘&#xff0c;文件名 daochu5.sql ② 在工具执行SQL界面输入 d:\daochu5.sql;,点击运行按钮运行