javascript二维数组按指定要求进行对象合并遍历的算法开发

news2025/1/10 11:24:01

javascript二维数组按指定要求进行对象合并遍历的算法开发

  • 项目原数据
  • 项目需求
    • 数据格式
    • 算法开发

项目原数据

从第三方API获取如何格式的数据:

  • “device”: “二(1)班”,不同班级名称,会重复
  • “name”: “二(1)班-电量”,不同班级的数据标准
  • “value”: 10,数据值
    那实际开发中,如何根据需要进行数据的合并和计算呢?
[{
		"device": "二(1)班",
		"name": "二(1)班-电量",
		"value": 10
	},
	{
		"device": "二(1)班",
		"name": "二(1)班-电流",
		"value": 11
	},
	{
		"device": "二(1)班",
		"name": "二(1)班-电功率",
		"value": 12
	},
	{
		"device": "二(2)班",
		"name": "二(2)班-电量",
		"value": 13
	},
	{
		"device": "二(2)班",
		"name": "二(2)班-电流",
		"value": 14
	},
	{
		"device": "二(2)班",
		"name": "二(2)班-电功率",
		"value": 15
	}
]

项目需求

数据格式

如何按照device相同数值的班级合并成一个数组格式如:

{"device": "二(1)班","name": "二(1)班-电量,二(1)班-电流,二(1)班-电功率","value": "10,11,12"},
{"device": "二(2)班","name": "二(2)班-电量,二(2)班-电流,二(2)班-电功率","value": "13,14,15"}]

算法开发

在JavaScript中,你可以使用reduce函数来将具有相同"device"的对象合并成一个新的数组。下面是一个例子:

let data = [
    { "device": "二(1)班", "name": "二(1)班-电量", "value": 10 },
    { "device": "二(1)班", "name": "二(1)班-电流", "value": 11 },
    { "device": "二(1)班", "name": "二(1)班-电功率", "value": 12 },
    { "device": "二(2)班", "name": "二(2)班-电量", "value": 13 },
    { "device": "二(1)班", "name": "二(2)班-电流", "value": 14 },
    { "device": "二(1)班", "name": "二(2)班-电功率", "value": 15 }
];

let result = data.reduce((acc, curr) => {
    let found = acc.find(item => item.device === curr.device);
    if (found) {
        found.name += ',' + curr.name;
        found.value += ',' + curr.value;
    } else {
        acc.push({
            device: curr.device,
            name: curr.name,
            value: curr.value
        });
    }
    return acc;
}, []);

console.log(result);

在这里插入图片描述

在这个脚本中,我们遍历数据数组,并使用reduce函数来创建一个新的结果数组。对于每一个元素,它会检查是否已经在结果数组中找到一个相同的"device"。如果找到,它会将当前元素的"name"和"value"添加到找到的元素的"name"和"value"上。如果没有找到,它会将当前元素添加到结果数组中。最后,它将打印出结果数组。


@漏刻有时

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

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

相关文章

如何初始化静态成员在类中

c - How do I initialize a const data member? - Stack Overflow

安卓逆向 - 某东sign(基于unidbg主动调用)

本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,拒绝转载,若有侵权请联系我删除! 目标app:5Lqs5LicYXBwMTEuMy4y 目标接口:aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGl…

9月1日作业

思维导图 服务器代码 #include<myhead.h>#define PORT 4567 #define IP "192.168.6.225"struct msg //接收到的客户端信息结构体 {char type;char name[20];char txt[128]; };//定义节点类型 typedef struct Node {union{struct sockaddr_in cin; //数据…

springboot+springSecurity+jwt实现登录认证后令牌授权

springbootspringSecurityjwt实现登录认证后令牌授权&#xff08;已绑定整个项目的源码&#xff09; 目录 springbootspringSecurityjwt实现登录认证后令牌授权&#xff08;已绑定整个项目的源码&#xff09;一、自定义数据源登录认证1、实现spring security中UserDetails类2、…

22.1 JavaScript 基础

1. JavaScript 1.1 简介 JavaScript(简称js): 是一种广泛应用于网页开发的脚本语言. 它被用于增强网页的交互性和动态性, 可以让开发者对网页进行操作和控制. JavaScript可用于处理用户输入, 改变网页的内容, 动态加载数据, 创建动画效果等. 它在现代的Web开发中扮演着至关重…

【GIS】栅格转面报错:ERROR 000864输入栅格: 输入不在定义的属性域内。 ERROR 000863: 无效的 GP 数据类型

问题: 栅格转面(矢量)时,ArcGIS窗口显示:ERROR 000864输入栅格: 输入不在定义的属性域内。 ERROR 000863: 无效的 GP 数据类型. 原因: 栅格转面时输入的栅格数据集的字段必须是整型. 解决办法: 使用Spatial Analyst中的转为整型工具,将栅格数据转为整型后再进行栅格转面的操作…

pycharm增加新的编译器

安装了python2和3的电脑上&#xff0c;使用pycharm时候&#xff0c;最好将2和3都加入其编译器。 方法&#xff1a; 1、File-settings... 2、如图选择&#xff0c;然后点击加号&#xff0c;添加python2或者3的exe

通常用哪些软件做数据可视化大屏?

一般就两种&#xff0c;一种是可视化大屏编辑软件&#xff0c;另一种则是BI系统&#xff08;BI数据可视化工具&#xff09;。考虑到数据来源多、数据量大以及数据分析效率、直观易懂性等实实在在的客观问题&#xff0c;建议采用BI系统来制作数据可视化大屏。 BI系统做可视化大…

首个国家级元宇宙计划发布,和数集团迎来赛道发展新机遇

近日&#xff0c;工业和信息化部、教育部、文化和旅游部、国务院国资委、国家广播电视总局办公厅五部门联合印发《元宇宙产业创新发展三年行动计划&#xff08;2023-2025年&#xff09;》&#xff08;以下简称《计划》&#xff09;&#xff0c;其中在发展目标中提到要培育3-5家…

手把手教你搭建WordPress博客网站并发布至公网

文章目录 概述前置准备1 安装数据库管理工具1.1 安装图形图数据库管理工具&#xff0c;SQL_Front 2 创建一个新数据库2.1 创建数据库2.2 为数据库创建一个用户 3 安装PHP7.44. 创建一个新站点4.1 创建站点根目录4.2 访问WordPress官网&#xff0c;下载最新版本的压缩包4.3 创建…

Linux之yum/git的使用

目录 一、yum 1、关于yum 2、yum的操作 ①、yum list ②、yum install ③、yum remove 二、git 1、Linux中连接gitee 2、git的操作 ①git add [文件] ②git commit -m "提交日志" ③git push 3、可能出现的问题 ①配置用户名、邮箱 ②出现提交冲突 ③…

2023在家做什么副业兼职能赚钱?分享几种线上兼职副业!

现代社会&#xff0c;很多人都渴望能够在家中轻松自由地赚取一份收入。无论是为了照顾孩子、追求个人兴趣还是摆脱繁忙的通勤&#xff0c;都有越来越多的人开始探索如何在家赚钱。幸运的是&#xff0c;随着技术的进步和互联网的普及&#xff0c;我们现在有更多的机会去实现这个…

halcon对图片进行处理基础

实例图片 C:\Users\Public\Documents\MVTec\HALCON-19.11-Progress\examples\images*读取图片 read_image (Image1, D:/c/image/1.png) *读取大小 get_image_size(Image1,Width, Height) *创建窗口 dev_close_window() dev_open_window(0, 0, Width, Height, black, WindowHan…

D. Cyclic Operations Codeforces Round 897 (Div. 2)

Problem - D - Codeforces 题目大意&#xff1a;有一个长度为n的数组a&#xff0c;每次操作可以选取一个长度为k的所有数互不相同的数组b&#xff0c;令a[bi]b[i%k1]&#xff0c;问能否将一个全为零的数组通过任意次操作得到a 1<k<n<1e5 思路&#xff1a;通过上述操…

如何用Jmeter编写脚本压测

随着商业业务不断扩张&#xff0c;调用adsearch服务频率越来越高&#xff0c;所以这次想做个压测&#xff0c;了解目前多少并发量可以到达adsearch服务的界值。 这次选用的jmeter压测工具&#xff0c;压测思路如图&#xff1a; 同时&#xff0c;我也准备了一份软件测试面试视频…

Windows C++ VS2022 OpenVINO 物体检测 Demo

准备工作&#xff1a; 1、下载opencv 地址&#xff1a;Releases - OpenCV 我下载的是opencv-4.5.5&#xff0c;存放的路径为&#xff1a; 2、下载OpenVino 地址&#xff1a;https://storage.openvinotoolkit.org/repositories/openvino/packages/2023.0.1/ 我存放的路径为…

蓝牙运动耳机哪款好用、最好用的运动耳机推荐

运动耳机现如今可谓是备受热捧的运动潮流单品&#xff0c;消费者对于耳机的需求实际上非常多元化。一款出色的运动耳机不仅要满足基本的运动需求&#xff0c;还需要具备丰富的使用功能&#xff0c;这直接决定了耳机的附加价值。接下来&#xff0c;我将向大家推荐5款佩戴舒适、牢…

HarmonyOS应用开发—资源分类与访问

应用开发过程中&#xff0c;经常需要用到颜色、字体、间距、图片等资源&#xff0c;在不同的设备或配置中&#xff0c;这些资源的值可能不同。 应用资源&#xff1a;借助资源文件能力&#xff0c;开发者在应用中自定义资源&#xff0c;自行管理这些资源在不同的设备或配置中的表…

idea装载jerbel以及文件上传下载

一、JRebel 1.1 Jrebel介绍 JRebel是一个Java开发工具&#xff0c;它是一款用于实时代码重载的插件。它的主要功能是在不重新启动应用程序的情况下&#xff0c;将修改后的Java代码实时应用到正在运行的应用程序中&#xff0c;从而加快开发周期&#xff0c;提高开发效率。 实…

算法通关村第十九关:青铜-动态规划是怎么回事

青铜挑战-动态规划是怎么回事 动态规划&#xff08;简称DP&#xff0c;Dynamic Programming&#xff09;&#xff1a;最热门、最重要的算法之一。面试中大量出现&#xff0c;整体偏难。 1. 热身&#xff1a;重复计算和记忆化搜索&#xff08;如何说一万次"我爱你"&…