【算法】在vue3的ts代码中分组group聚合源数据列表

这篇具有很好参考价值的文章主要介绍了【算法】在vue3的ts代码中分组group聚合源数据列表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有一个IList<any>()对象列表,

示例数据为[{id:'1',fieldName:'field1',value:'1'},{id:'1',fieldName:'field2',value:'2'},{id:'2',fieldName:'field1',value:'1'},{id:'2',fieldName:'field2',value:'2'}]

那么在ts中将它们根据id分组构建为两个dynamicObject,类推,如果id有n个,那需要自动构建n个dynamicObject。

算法实现:

 1 const list: IList<any> = [  
 2   { id: '1', fieldName: 'field1', value: '1' },  
 3   { id: '1', fieldName: 'field2', value: '2' },  
 4   { id: '2', fieldName: 'field1', value: '1' },  
 5   { id: '2', fieldName: 'field2', value: '2' }  
 6 ];  
 7   
 8 const map = new Map<string, any>();  
 9   
10 for (const item of list) {  
11   if (!map.has(item.id)) {  
12     const newObj = {};
13     newObj['id'] = item.id;
14     map.set(item.id, newObj);  
15   }  
16   const obj = map.get(item.id);  
17   obj[item.fieldName] = item.value;  
18 }  
19   
20 console.log(map);
21 
22 //将map转化为数组,可以进行for或forEach循环
23 const arrList = [...map];
24 
25 console.log(arrList);
26 //arrayList产生2条数据:{id:'1',field1:'1',field2:'2'},{id:'2',field1:'1',field2:'2'}
27  arrList.forEach((item: any) => {
28          //item[0]的值为1,即map的key
29         //item[1]的值为{id:'1',field1:'1',field2:'2'}
30         //continue类推
31    });

在以上的TS代码中,我们通过使用map函数对一个包含多个对象的数组进行了聚合操作。这些对象具有相同的id属性,我们根据这个属性将它们进行分组。

首先,我们创建了一个空对象result,用于存储聚合后的结果。然后,我们使用Array.prototype.map()函数对原始数组进行迭代。在每次迭代中,我们取出当前对象,通过map()函数将其转换为一个新的对象。

在转换过程中,我们使用了Object.assign()函数来复制当前对象的内容,并添加一个新的属性fields。这个属性的值是一个空对象{},它将用于存储与当前对象具有相同id属性的其他对象。

接下来,我们再次使用map()函数对原始数组进行迭代,但这次我们只关注具有与当前对象相同id属性的对象。我们将这些对象赋值给一个新对象obj,并使用Object.assign()函数将其添加到之前创建的fields对象中。

最后,我们将包含所有聚合对象的result数组输出到控制台。

通过这个聚合操作,我们可以将具有相同id属性的对象合并在一起,形成一个包含多个字段的对象。这样的操作在处理大量数据时非常有用,可以减少重复数据,提高数据处理效率。文章来源地址https://www.toymoban.com/news/detail-665797.html

到了这里,关于【算法】在vue3的ts代码中分组group聚合源数据列表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

    在上次学习的内容中,我们讲解了: 使用DDL语句来操作数据库以及表结构(数据库设计) 使用DML语句来完成数据库中数据的增、删、改操作(数据库操作) 我们今天还是继续学习数据库操作方面的内容:查询(DQL语句)。 查询操作我们分为两部分学习: DQL语句-单表操作

    2024年02月02日
    浏览(81)
  • 【vue3+ts项目】配置eslint校验代码工具,eslint+prettier+stylelint

    package.json中 vite后面加上 --open 回答问题如下: 使用eslint仅检查语法,还是检查语法及错误,选第二个 使用的是什么模块,选第一个 项目使用的是什么框架,选vue 项目中使用TyoeScript ,选yes 项目运行在哪,选浏览器 创建的配置类型需要什么类型的,选Javascript 需要安装这些

    2024年02月09日
    浏览(83)
  • Vue3+Vite+TS项目集成ESlint +Prettier实现代码规范检查和代码格式化

    我在这里直接是通过vite提供的默认模板来创建一个vue3 + ts的项目。这里可以cmd,然后npm -v来查看版本。 这样一个vue3 + ts的项目就创建好了,使用vscode打开该项目,然后执行 yarn 安装依赖 依赖安装完成后,执行   yarn dev  启动项目就可以在浏览器中正常访问了。   初始化

    2024年01月24日
    浏览(87)
  • 【Vue3+Ts】项目启动准备和配置项目代码规范和css样式的重置

    创建项目( 使用Vite 构建工具创建项目模板) 创建完项目,npm install 一下即可 目录介绍 插件安装 看一下vscode推荐的插件 安装所推荐的插件,为了更好的类型检测 创建别名 编译说明 项目配置 配置icon和标题 配置项目别名 配置ts.config.json 检测vscode的插件是否配置 配置项目代

    2024年02月10日
    浏览(45)
  • uniapp+vite+vue3+ts配置eslint代码检查及prettier规范检查

    首先要知道eslint与prettier的区别,ESLint 是一个用于检测 JavaScript 代码中的错误和潜在问题的工具。它只关注你写的代码是否正确,不会管你代码的格式;Prettier 则是一个代码格式化工具,它旨在确保代码在缩进、空格、换行、引号和分号等格式化方面遵循一致的规则,在

    2024年03月16日
    浏览(66)
  • uniapp--- 微信小程序 用户隐私新规相关代码调整【vue3+ts+uView框架】

    官方公告地址:https://developers.weixin.qq.com/community/develop/doc/00042e3ef54940ce8520e38db61801 用户隐私保护指引填写说明地址:https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/ 1) 需要在9月15前更新完毕,否则会无法使用获取手机号 手机相册等相关信息。 2) 微信小程序开发工具

    2024年02月09日
    浏览(51)
  • group by进行分组时查询数据

    group by进行分组时查询数据需要注意:  select后的字段: 要么就要包含在Group By语句的后面,作为分组的依据;        要么就要被包含在聚合函数中。 错误: SELECT name, salary FROM student GROUP BY name        select 后的字段 salary 不在 group by 后面,所以salary无法显示全部值。 正确

    2024年02月11日
    浏览(31)
  • Vue3 - 解决 build / dev 打包运行时突然出现一堆 ts 相关的报错,强制关闭整个项目的 ts 代码语法校验和验证(webpack / vite 均可)

    无论您是 vite 还是 webpack,都可以 100% 去掉运行或打包时的 ts 语法验证。 本文 实现了在 vue3 + ts 开发中,关闭运行、打包部署命令时出现的各种 ts 校验报错,去掉对 ts 的验证, 有些朋友对 ts 不是很了解(所以在写代码时没注意一些语法),导致最终 build 打包时出现了很多

    2024年02月11日
    浏览(60)
  • 数据分析 — Pandas 分组聚合

    pandas.apply() 是 Pandas 库中的一个函数,用于在 DataFrame 或 Series 上应用自定义函数。这个函数可以 沿着指定的轴(行或列)逐行或逐列地应用函数 ,从而实现对数据的定制化操作。 参数: func(必需):这是要应用的函数,可以是一个 Python 函数、lambda 函数或可调用对象。这

    2024年02月19日
    浏览(41)
  • Sql group by 分组取时间最新的一条数据

    1.取时间最新的记录 不分组有重复(多条CreateTime一样的都是最新记录) 2.分组后取时间最新的记录 3.如果Id是uuid类型无法使用max(id)的解决办法(使用开窗函数)

    2024年02月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包