多源字段聚合重塑算法

要求如下

[[{"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;更是一个…

第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…

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

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

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

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

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进行分析…

Hive理论讲解

Hive介绍 1、Hive本质 Hive本质是【数仓设计方案】&#xff0c;hive本身并不存储数据【数据包含&#xff1a;元数据 (表)数据】。 2、hql和sql对比 sql 结构化查询语言【structured query language】hql hive/hadoop类sql查询语言【hive/hadoop query language like sql…

Python学习笔记40:游戏篇之外星人入侵(一)

前言 入门知识已经学完&#xff0c;常用标准库也了解了,pygame入门知识也学了&#xff0c;那么开始尝试小游戏的开发。 当然这个小游戏属于比较简单的小游戏&#xff0c;复杂的游戏需要长时间的编写累计开发经验&#xff0c;同时也需要一定的时间才能编写出来。现在的话还是嫩…

2024年7月16日(使用光盘创建本地仓库,引入网络镜像仓库,创建自建仓库)

了解yum源安装包的特点 了解常用的网络yum源 掌握本地和网络yum源的配置 能够使用yum工具安装软件包 rpm -ivh xxx 手动添加依赖 yum不止执行安装&#xff0c;会自动处理依赖安装 1、yum优点 rpm安装 &#xff08;下载软件 单独安装 需要解决依赖关系&#xff09; 源码安装 &am…

海外媒体发稿-瑞典SEO破茧成蝶:从0到10的实战精要-大舍传媒

海外媒体发稿-瑞典SEO破茧成蝶:从0到10的实战精要 一、迷茫与意义的探寻 有一天我找了王老师聊天&#xff0c;谈到生活迷茫和人生的意义。老师说了一段话&#xff1a;当全情投入于一件事情时&#xff0c;是没有时间去迷茫或思索人生意义的。我感触很深&#xff0c;当总感到迷…

linux服务器配置conda环境安装教程

1 软件准备 1.1 软件下载 https://repo.anaconda.com/archive/index.html 根据官网选择自己需要的版本。 这里下载的是 Anaconda3-2023.03-1-Linux-x86_64.sh 或者直接在linux中输入 wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh 1.…

操作系统内核源码杂谈篇:临界区

临界资源&#xff0c;是指同一时刻只能由一个线程&#xff08;linux下为进程&#xff09;访问的资源&#xff0c;而临界区就是为了确保临界资源访问是单一数据流。 临界区的代码执行&#xff0c;也就是进行原子操作&#xff0c;不会被打断。 先分析RTOS的运行架构&#xff0c…