多源字段聚合重塑算法

要求如下

[[{"oone": "评估是否聘请第三方机构","otwo": null,"othree": "test",},{"oone": "评估是否聘请第三方机构","otwo": null,"othree": "test",}],[{"oone": "评估是否聘请第三方机构","otwo": null,"othree": "test",},{"oone": "评估是否聘请第三方机构","otwo": null,"othree": "test",}]
]<!-- 转换成 -->
[{"oone": "评估是否聘请第三方机构","otwo": null,"othree_1": "test","othree_2": "test"},{"oone": "评估是否聘请第三方机构","otwo": null,"othree_1": "test","othree_2": "test"}
]

代码实战

function transformData(data) {// 确定最终结果数组中的对象数量const numObjectsInResult = data[0].length;// 使用空对象初始化结果数组const result = Array.from({ length: numObjectsInResult }, (_, objIndex) => {const firstObjectOfSubArray = data[0][objIndex];return { ...firstObjectOfSubArray };
});// 迭代原始数据中的每个子数组data.forEach((subArray, subArrayIndex) => {// 对子数组中的每个对象进行迭代subArray.forEach((obj, objIndex) => {// 将othree值添加到结果数组中的相应对象result[objIndex][`othree_${subArrayIndex + 1}`] = obj.othree;});});return result;
}const originalData = [[{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"},{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"},{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"}],[{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"},{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"},{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"}],[{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"},{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"},{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"}],[{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"},{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"},{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"}],[{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"},{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"},{"oone": "评估是否聘请第三方机构", "otwo": null, "othree": "test"}]
];const result = transformData(originalData);
console.log(result);

算法优化

  1. 减少数组遍历次数
  2. 避免不必要的对象复制
  3. 使用Map或对象作为临时存储
function transformData(data) {const numObjectsInResult = data[0].length;const result = new Map();// 初始化Map,添加othree属性的初始值data[0].forEach((obj, index) => {result.set(index, { ...obj });for (let i = 1; i <= data.length; i++) {result.get(index)[`othree_${i}`] = null;}});// 遍历data填充othree值data.forEach((subArray, subArrayIndex) => {subArray.forEach((obj, objIndex) => {result.get(objIndex)[`othree_${subArrayIndex + 1}`] = obj.othree;});});// 将Map转换回数组return Array.from(result.values());
}

应用场景

  1. 在vue中前面几个列可能是固定的, 后边几个列是动态展示
    在这里插入图片描述
    在这里插入图片描述
<template v-if="questionList.length > 0"><el-col class="third-el-col" :style="{width: questionlenght}"><el-card><el-table:data="questionListFix":span-method="objectSpanMethodThirdFix"><el-table-column label="问卷内容" rowspan="2" align="center"><el-table-columnprop="oone"label="问题"align="center"width="250px"></el-table-column><el-table-columnprop="otwo"label="子项"align="center"width="100px"></el-table-column><el-table-columnv-for="(column, index) in dynamicColumns":key="index":prop="column.prop":label="column.label"align="center"><template v-slot="scope"><MathInput:disabled="true":isTable="true"v-model="scope.row[column.prop]"></MathInput></template></el-table-column></el-table-column></el-table></el-card></el-col></template>//添加动态列的数据this.dynamicColumns.splice(0);let counter = 1;for (let i = 0; i < this.seachInfoIdList.length; i++) {this.dynamicColumns.push({prop: `othree_${counter++}`,label: `填写内容(${this.taskInfoIdMap.get(this.seachInfoIdList[i])})`});}// questionListFix 根据  上边的算法进行调整就可以了

解释

  1. dynamicColumns 是动态拼接的列

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

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

相关文章

python爬虫获取网易云音乐评论歌词以及歌曲地址

python爬虫获取网易云音乐评论歌词以及歌曲地址 一.寻找数据接口二.对负载分析三.寻找参数加密过程1.首先找到评论的请求包并找到发起程序2.寻找js加密的代码 四.扣取js的加密源码1.加密函数参数分析①.JSON.stringify(i0x)②bse6Y(["流泪", "强"])③bse6Y…

探索元宇宙:开启数字世界的奇妙之旅【小学生也能读懂】

元宇宙&#xff1a;数字新纪元的曙光 随着技术的飞速发展&#xff0c;我们正站在一个全新的数字时代的门槛上。元宇宙&#xff08;Metaverse&#xff09;&#xff0c;这个听起来充满未来感的词汇&#xff0c;已经成为科技界的热门话题。它不仅仅是一个概念&#xff0c;更是一个…

C语言——字符串两种声明初始化方式、输入输出及常见处理函数

C语言中的字符串是一个字符数组&#xff0c;它以空字符&#xff08;\0&#xff09;作为结束标志。这意味着字符串中的字符是连续存储在内存中的&#xff0c;而字符串的末尾会自动添加一个\0字符来表示字符串的结束。这种表示方式使得C语言在处理字符串时非常灵活&#xff0c;但…

第1关 -- Linux 基础知识

闯关任务 完成SSH连接与端口映射并运行hello_world.py ​​​​ 可选任务 1 将Linux基础命令在开发机上完成一遍 可选任务 2 使用 VSCODE 远程连接开发机并创建一个conda环境 创建新的虚拟环境lm3 可选任务 3 创建并运行test.sh文件 参考文档 文档&#xff1a;https://g…

【MySQL-19】一文带你了解存储函数

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

ROS2中间件

ROS2 是重新设计的 Robot Operating System&#xff0c;无论从用户API接口到底层实现都进行了改进。这里主要关注ROS2 的中间件。 1. 通信模式 ROS2 使用DDS协议进行数据传输&#xff0c;并通过抽象的rmw&#xff0c;支持多个厂家的DDS实现&#xff08;FastDDS&#xff0c;Cyc…

Python 和 R两者的主要区别和优缺点对比

有个问题&#xff0c;既然做模型调的还是python&#xff0c;那为啥很多人还用R呢&#xff1f; 这是一个很好的问题。Python 和 R 都是数据科学和统计分析领域中非常流行的编程语言&#xff0c;它们各有优缺点&#xff0c;选择哪种语言通常取决于具体的任务需求、个人或团队的技…

【链表】算法题(二) ----- 力扣/牛客

一、链表的回文结构 思路&#xff1a; 找到链表的中间节点&#xff0c;然后逆置链表的后半部分&#xff0c;再一一遍历链表的前半部分和后半部分&#xff0c;判断是是否为回文结构。 快慢指针找到链表的中间节点 slow指针指向的就是中间节点 逆置链表后半部分 逆置链表后半部分…

Java 如何实现单点登录案例详解

单点登录&#xff08;SSO&#xff09;是一种用户身份验证机制&#xff0c;允许用户在多个系统或应用程序中使用同一组登录凭据。从业务需求的角度来看&#xff0c;单点登录具有以下优势和必要性&#xff1a; 从业务需求的角度来看&#xff0c;单点登录具有以下优势和必要性&am…

梧桐数据库:数据库技术中表的统计信息技术详解

在数据库技术中&#xff0c;表的统计信息主要用于查询优化等方面&#xff0c;以下是对其的详细解释&#xff1a; 作用&#xff1a; 帮助查询优化器做出更合理的执行计划决策&#xff0c;以提高查询性能。 常见的统计信息类型&#xff1a; 行数&#xff08;Row count&#xf…

Transformer是怎样处理序列数据的?

Transformer模型最初是一种广泛应用于自然语言处理&#xff08;NLP&#xff09;和其他序列建模任务的架构。它由编码器&#xff08;encoder&#xff09;和解码器&#xff08;decoder&#xff09;组成。 以下是Transformer模型输入和输出的详细介绍&#xff1a; 输入 1. 输入…

Pandas库学习之dataframe.corr()函数

Pandas库学习之dataframe.corr()函数 一、简介 dataframe.corr()是Pandas库中的一个函数&#xff0c;用于计算DataFrame中各列之间的相关系数。相关系数衡量的是两个变量之间线性关系的强度和方向&#xff0c;结果在-1到1之间&#xff0c;分别表示完全负相关和完全正相关。 二…

前端代码审查大纲

一、代码审查的目的 提升代码质量&#xff1a;代码审查可以发现代码中的错误、漏洞、不符合规范的地方&#xff0c;从而及时进行修正。这有助于提升代码的稳定性和可靠性&#xff0c;减少运行时出现的问题。 统一编码标准和风格&#xff1a;代码审查可以确保团队成员遵循统一的…

Maven学习——Maven的下载、安装与配置(详细攻略!)

目录 前言 1.下载与安装 2.配置Maven的环境变量 3.配置Maven的本地仓库 4. 配置Maven的镜像远程仓库 前言 我在之前写了一篇博客&#xff0c;是介绍Maven的基本概念和下载安装&#xff0c;但是由于篇幅过长&#xff0c;Maven的下载与安装写的并不详细&#x1f436;&#x…

TCP三次握手与四次挥手详解

1.什么是TCP TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的通信协议&#xff0c;属于互联网协议族&#xff08;TCP/IP&#xff09;的一部分。TCP 提供可靠的、顺序的、无差错的数据传输服务&…

TeamViewer手机端APP提示:请先验证账户

当你在手机端下载安装了TeamViewerAPP后&#xff0c;需要你先登录个人账号&#xff0c;然后还会要求你验证账户&#xff0c;同时跳转到一个网址中&#xff0c;但是这个网址并没有自动跳转到验证账户的位置。 解决办法&#xff1a; 在手机浏览器中进入下面这个网址&#xff1a;…

SpringCloudAlibaba-Seata2.0.0与Nacos2.2.1

一、下载 ## 下载seata wget https://github.com/apache/incubator-seata/releases/download/v2.0.0/seata-server-2.0.0.tar.gz## 解压 tar zxvf seata-server-2.0.0.tar.gz二、执行sql文件 ## 取出sql文件执行 cd /seata/script/server/db/mysql ## 找个mysql数据库执行三、…

分布式搜索引擎ES-elasticsearch入门

1.分布式搜索引擎&#xff1a;luceneVS Solr VS Elasticsearch 什么是分布式搜索引擎 搜索引擎&#xff1a;数据源&#xff1a;数据库或者爬虫资源 分布式存储与搜索&#xff1a;多个节点组成的服务&#xff0c;提高扩展性(扩展成集群) 使用搜索引擎为搜索提供服务。可以从海量…

算法基础之回溯法

本文将详细介绍回溯法的基本原理和适用条件&#xff0c;并通过经典例题辅助读者理解回溯法的思想、掌握回溯法的使用。本文给出的例题包括&#xff1a;N皇后问题、子集和问题。 算法原理 在问题的解空间树中&#xff0c;回溯法按照深度优先的搜索策略&#xff0c;从根结点出发…

IP溯源工具--IPTraceabilityTool

工具地址&#xff1a;xingyunsec/IPTraceabilityTool: 蓝队值守利器-IP溯源工具 (github.com) 工具介绍&#xff1a; 在攻防演练期间&#xff0c;对于值守人员&#xff0c;某些客户要求对攻击IP都进行分析溯源&#xff0c;发现攻击IP的时候&#xff0c;需要针对攻击IP进行分析…