Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
如何使用JavaScript合并数组中相同ID的对象并重新组织数据格式?_创想鸟

如何使用JavaScript合并数组中相同ID的对象并重新组织数据格式?

如何使用javascript合并数组中相同id的对象并重新组织数据格式?

JavaScript数组对象合并与数据重组

本文演示如何使用JavaScript将数组中具有相同ID的对象合并,并将其重新组织成特定格式。 假设我们有一个包含ID和其他字段的数组,需要根据ID合并这些对象,并将金额数据按照早餐、中餐、晚餐分别映射到新的字段。

原始数据:

const originalData = [    { id: "202301", jine: 23, type: "晚餐" },    { id: "202301", jine: 87.5, type: "早餐" },    { id: "202301", jine: 1065.5, type: "中餐" },    { id: "202302", jine: 10, type: "晚餐" },    { id: "202302", jine: 181.5, type: "早餐" },    { id: "202302", jine: 633.5, type: "中餐" }];

目标数据格式:

const targetDataFormat = [    { id: "202301", jine1: 87.5, jine2: 1065.5, jine3: 23 },    { id: "202302", jine1: 181.5, jine2: 633.5, jine3: 10 }];

解决方案:

立即学习“Java免费学习笔记(深入)”;

我们可以使用reduce方法来实现数据合并和重组。 reduce方法迭代数组,并将结果累积到一个新的对象中。

const reorganizedData = originalData.reduce((acc, curr) => {    const existingItem = acc.find(item => item.id === curr.id);    if (existingItem) {        if (curr.type === '早餐') existingItem.jine1 = curr.jine;        if (curr.type === '中餐') existingItem.jine2 = curr.jine;        if (curr.type === '晚餐') existingItem.jine3 = curr.jine;    } else {        const newItem = { id: curr.id };        if (curr.type === '早餐') newItem.jine1 = curr.jine;        if (curr.type === '中餐') newItem.jine2 = curr.jine;        if (curr.type === '晚餐') newItem.jine3 = curr.jine;        acc.push(newItem);    }    return acc;}, []);

这段代码首先创建一个空数组acc作为累加器。 然后,它迭代originalData数组。 对于每个对象,它检查累加器中是否已经存在具有相同ID的对象。 如果存在,则根据type字段更新相应的jine字段。 如果不存在,则创建一个新对象并将其添加到累加器中。 最终,reorganizedData将包含重组后的数据。

这个方法避免了使用Object.groupBy,直接通过reduce方法完成数据合并和重组,代码更简洁易懂。 最终结果与目标数据格式targetDataFormat一致。

以上就是如何使用JavaScript合并数组中相同ID的对象并重新组织数据格式?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1503770.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HTTP接口请求能获取用户内网IP地址吗?
上一篇 2025年12月20日 02:15:50
如何使用JS实现类似finereport的动态展开N阶Table和Row功能?
下一篇 2025年12月20日 02:16:02

相关推荐

  • 通过脚本使用认证方式控制 Shelly 设备

    通过脚本使用认证方式控制 Shelly 设备通过脚本使用认证方式控制 Shelly 设备通过脚本使用认证方式控制 Shelly 设备通过脚本使用认证方式控制 Shelly 设备

    本文介绍了如何通过 Shelly 脚本,在使用用户名和密码保护的 Shelly 设备上执行操作。核心在于利用 HTTP.Request 方法手动构建带有 Authorization: Basic 头的 HTTP 请求,从而绕过 HTTP.GET 方法无法传递认证信息的限制,并提供了详细的代码示例。 …

    2026年10月2日 • 用户投稿
    000
  • 如何利用 Goto Anything 快速定位文件 / 符号?

    如何利用 Goto Anything 快速定位文件 / 符号?如何利用 Goto Anything 快速定位文件 / 符号?如何利用 Goto Anything 快速定位文件 / 符号?如何利用 Goto Anything 快速定位文件 / 符号?

    goto anything 是 sublime text 中提升代码导航效率的核心工具。它支持通过输入文件名、路径、符号名或行号,实现快速定位。具体使用方式包括:1. 文件查找:输入文件名或用 / 指定路径;2. 符号查找:输入 @ 加符号名;3. 行号跳转:输入 : 加行号;4. 支持多项目搜索并…

    2026年10月2日 • 用户投稿
    000
  • AnimaTensor— 吐司AI等推出的二次元图像生成模型

    AnimaTensor— 吐司AI等推出的二次元图像生成模型AnimaTensor— 吐司AI等推出的二次元图像生成模型AnimaTensor— 吐司AI等推出的二次元图像生成模型AnimaTensor— 吐司AI等推出的二次元图像生成模型

    AnimaTensor简介 animatensor是由cagliostrolab团队与tensorart联合开发的二次元图像生成模型。该模型采用了创新的v-prediction技术,通过预测图像生成过程中的“速度”来优化噪声调度和采样策略,从而提升图像质量和生成效率。animatensor分为两个版…

    2026年10月2日 • 用户投稿
    000
  • 插件更新后导致 Sublime Text 崩溃的回滚方法

    插件更新后导致 Sublime Text 崩溃的回滚方法插件更新后导致 Sublime Text 崩溃的回滚方法插件更新后导致 Sublime Text 崩溃的回滚方法插件更新后导致 Sublime Text 崩溃的回滚方法

    sublime text因插件更新崩溃的解决方法是:先以安全模式启动定位问题插件,再通过逐个启用排查并降级或卸载问题插件。1. 以安全模式启动(按住shift/option键),若正常则问题由插件引起;2. 逐个启用插件测试,锁定导致崩溃的具体插件;3. 对问题插件选择降级安装旧版或彻底卸载;4. …

    2026年10月2日 • 用户投稿
    000
  • Java Stream中实现基于转换属性的条件过滤

    本文探讨了在Java Stream中,如何根据对象的某个映射属性进行过滤,同时又能保留原始对象的完整性。针对这一常见需求,文章详细介绍了Java 16及更高版本中Stream#mapMulti的强大用法,以及在旧版本Java中如何通过Stream#filter结合Lambda表达式高效实现,并分析了…

    2026年10月2日
    200
  • 《赛博朋克2077》官方再度修改主角V年龄设定

    《赛博朋克2077》官方再度修改主角V年龄设定《赛博朋克2077》官方再度修改主角V年龄设定《赛博朋克2077》官方再度修改主角V年龄设定《赛博朋克2077》官方再度修改主角V年龄设定

    在《赛博朋克2077》中,主角v是一个高度可定制的角色。玩家不仅可以自定义其外貌和背景故事,还能在游戏中为其做出关键的人生抉择。尽管v的设定较为完整,但其官方年龄却始终处于变动之中。 这并非指角色随着游戏时间推移而自然变老,而是因为开发商CD Projekt Red从未最终敲定V的确切年龄。游戏刚发…

    2026年10月2日 • 用户投稿
    100
  • 多语言开发场景下的插件组合推荐

    多语言开发场景下的插件组合推荐多语言开发场景下的插件组合推荐多语言开发场景下的插件组合推荐多语言开发场景下的插件组合推荐

    多语言开发效率提升的关键在于根据需求选择合适的插件组合。推荐如下:1. 代码编辑器/ide 插件:vs code 可选用 pylance、eslint 等语言支持类插件,intellij idea 对 java/kotlin 原生支持良好并兼容其他语言;2. 翻译类插件如彩云小译和 code tra…

    2026年10月2日 • 用户投稿
    100
  • 前端框架(React/Vue)的语法支持方案

    前端框架(React/Vue)的语法支持方案前端框架(React/Vue)的语法支持方案前端框架(React/Vue)的语法支持方案前端框架(React/Vue)的语法支持方案

    配置前端框架react/vue的语法支持方案主要围绕编辑器插件和构建工具配置展开。1. react推荐安装eslint和prettier插件实现代码检查与格式化,结合babel处理jsx及es6+语法,使用typescript时需配置tsconfig.json中的jsx选项为react;2. vue…

    2026年10月2日 • 用户投稿
    100
  • 项目文件夹配置与多文件管理技巧

    项目文件夹配置与多文件管理技巧项目文件夹配置与多文件管理技巧项目文件夹配置与多文件管理技巧项目文件夹配置与多文件管理技巧

    高效的项目文件夹结构应具备清晰、一致、可扩展的特点。1. 顶层目录通常包括src(源代码)、data(数据)、docs(文档)、assets(资源)、lib(依赖库)、build(构建输出)、tests(测试)等;2. 每个目录下按模块或功能进一步细分,如src下分components、pages、…

    2026年10月2日 • 用户投稿
    100
  • 10月XGP阵容强势来袭!八款首发包括《忍者龙剑传4》等大作

    10月XGP阵容强势来袭!八款首发包括《忍者龙剑传4》等大作10月XGP阵容强势来袭!八款首发包括《忍者龙剑传4》等大作10月XGP阵容强势来袭!八款首发包括《忍者龙剑传4》等大作10月XGP阵容强势来袭!八款首发包括《忍者龙剑传4》等大作

    2025年10月将成为xbox game pass订阅服务的重磅月份,届时将有八款游戏在发布当天直接登陆xgp阵容,其中三款作品出自xbox游戏工作室之手。这一举措延续了2025年xgp始终坚持的核心策略:为玩家提供首发即享的高品质游戏体验。值得一提的是,截至目前,2025年评分最高的三款游戏均已在…

    2026年10月2日 • 用户投稿
    100
  • java使用教程如何读写本地文件内容 java使用教程的文件操作实用方法​

    java使用教程如何读写本地文件内容 java使用教程的文件操作实用方法​java使用教程如何读写本地文件内容 java使用教程的文件操作实用方法​java使用教程如何读写本地文件内容 java使用教程的文件操作实用方法​java使用教程如何读写本地文件内容 java使用教程的文件操作实用方法​

    读写本地文件的核心是正确使用java io流,根据文件类型选择合适的流类;2. 读取大型文本文件应使用bufferedreader结合readline()方法,并利用try-with-resources确保资源自动关闭,以提高效率和安全性;3. 处理不同编码格式文件时,需通过inputstreamr…

    2026年10月2日 • 用户投稿
    100
  • Node.js Workerpool 最佳实践:CPU密集型任务的资源管理策略

    Node.js Workerpool 最佳实践:CPU密集型任务的资源管理策略Node.js Workerpool 最佳实践:CPU密集型任务的资源管理策略Node.js Workerpool 最佳实践:CPU密集型任务的资源管理策略Node.js Workerpool 最佳实践:CPU密集型任务的资源管理策略

    本文探讨了在Node.js应用中高效管理CPU密集型任务的策略,特别是使用workerpool库时。核心观点是推荐使用一个单一的、集中管理的Worker Pool来处理所有不同类型的任务,而非为每种任务或路由创建独立的Pool。这种方法能有效避免资源过度竞争、优化CPU利用率,并简化资源管理,确保系…

    2026年10月2日 • 用户投稿
    000
  • 恶搞策略新作《Kingmakers》10月9日开放抢先测试:用枪炮爆杀中世纪!

    恶搞策略新作《Kingmakers》10月9日开放抢先测试:用枪炮爆杀中世纪!恶搞策略新作《Kingmakers》10月9日开放抢先测试:用枪炮爆杀中世纪!恶搞策略新作《Kingmakers》10月9日开放抢先测试:用枪炮爆杀中世纪!恶搞策略新作《Kingmakers》10月9日开放抢先测试:用枪炮爆杀中世纪!

    在去年2月,一款名为《kingmakers》的恶搞风格策略游戏发布了首支预告片,因其玩法中允许玩家使用ak47、装甲车乃至飞机大炮来碾压中世纪的“铁皮罐头”骑士,迅速被玩家们调侃为“骑马与开枪”。steam商店页面>>> 该游戏的抢先体验版本将于10月9日正式上线。近日,开发团队R…

    2026年10月2日 • 用户投稿
    100
  • java如何实现类之间的继承关系 java继承特性的应用操作指南

    java如何实现类之间的继承关系 java继承特性的应用操作指南java如何实现类之间的继承关系 java继承特性的应用操作指南java如何实现类之间的继承关系 java继承特性的应用操作指南java如何实现类之间的继承关系 java继承特性的应用操作指南

    java中实现类之间的继承关系,核心在于使用extends关键字,它允许子类继承父类的字段和方法,建立“is-a”关系,实现代码复用、多态性、扩展性和层次化设计;1. 使用extends关键字让子类继承父类,如class dog extends animal;2. 子类可通过super()调用父类构…

    2026年10月2日 • 用户投稿
    200
  • windows怎么恢复电源计划为默认值_电源计划恢复默认设置教程

    windows怎么恢复电源计划为默认值_电源计划恢复默认设置教程windows怎么恢复电源计划为默认值_电源计划恢复默认设置教程windows怎么恢复电源计划为默认值_电源计划恢复默认设置教程windows怎么恢复电源计划为默认值_电源计划恢复默认设置教程

    首先通过控制面板或命令提示符重置电源计划,默认设置可修复性能与续航问题,必要时使用系统还原回退至正常状态。 如果您发现Windows系统的电源计划设置混乱,导致设备性能或电池续航异常,可能是电源配置被修改所致。将电源计划恢复为默认值可以解决此类问题。 本文运行环境:Dell XPS 13,Windo…

    2026年10月2日 • 用户投稿
    100
  • java使用教程怎样实现基于TCP的网络通信 java使用教程的TCP编程入门技巧​

    java使用教程怎样实现基于TCP的网络通信 java使用教程的TCP编程入门技巧​java使用教程怎样实现基于TCP的网络通信 java使用教程的TCP编程入门技巧​java使用教程怎样实现基于TCP的网络通信 java使用教程的TCP编程入门技巧​java使用教程怎样实现基于TCP的网络通信 java使用教程的TCP编程入门技巧​

    java中实现tcp通信需编写服务器端和客户端代码,服务器使用serversocket监听端口并接受连接,客户端通过socket连接服务器,双方通过输入输出流交换数据,tcp确保可靠、有序传输。1. 服务器端创建serversocket绑定端口,调用accept()阻塞等待客户端连接,每接受一个连接…

    2026年10月2日 • 用户投稿
    100
  • Sublime Text 主题更换后显示异常的解决方法

    Sublime Text 主题更换后显示异常的解决方法Sublime Text 主题更换后显示异常的解决方法Sublime Text 主题更换后显示异常的解决方法Sublime Text 主题更换后显示异常的解决方法

    更换sublime text主题后显示异常,通常由兼容性、配置或缓存问题导致。1. 检查主题是否兼容当前sublime text版本;2. 清理缓存文件夹;3. 确保package control正常工作并尝试重新安装;4. 手动下载主题并安装至packages目录;5. 检查主题文档并完成必要配置…

    2026年10月2日 • 用户投稿
    100
  • 华为 Mate 80 或 11 月发,细节再曝

    华为 Mate 80 或 11 月发,细节再曝华为 Mate 80 或 11 月发,细节再曝华为 Mate 80 或 11 月发,细节再曝华为 Mate 80 或 11 月发,细节再曝

    随着10月的到来,关于华为下一代mate系列旗舰的爆料信息也逐渐清晰起来。 近期,知名数码博主 @数码闲聊站 发布消息称:“前两天提到的那款就是华为 Mate80 系列,代号为 Voyager/Sagittarius。其中 VYG 标准版支持 66W 有线快充,SGT Pro 系列则配备 100W …

    2026年10月2日 • 用户投稿
    100
  • 什么是LSM树?LSM树的层次结构

    什么是LSM树?LSM树的层次结构什么是LSM树?LSM树的层次结构什么是LSM树?LSM树的层次结构什么是LSM树?LSM树的层次结构

    lsm树通过将写入操作先缓存在内存的memtable中,再批量刷新到磁盘的sstables,并利用多层级结构和compaction机制,将随机写转化为顺序写,显著提升写入性能;其层次结构由内存中的memtable和immutable memtable,以及磁盘上分层的sstables组成,l0层允许…

    2026年10月2日 • 用户投稿
    000
  • 如何在Sublime Text中安装并切换不同的主题与配色方案?

    如何在Sublime Text中安装并切换不同的主题与配色方案?如何在Sublime Text中安装并切换不同的主题与配色方案?如何在Sublime Text中安装并切换不同的主题与配色方案?如何在Sublime Text中安装并切换不同的主题与配色方案?

    在sublime text中安装和切换主题与配色方案的步骤如下:1. 安装package control:通过控制台运行代码安装包管理器;2. 使用package control安装主题(如material theme)和配色方案(如monokai pro);3. 在preferences >…

    2026年10月2日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信