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

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

项目原数据

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

  • "device": "二(1)班",不同班级名称,会重复
  • "name": "二(1)班-电量",不同班级的数据标准
  • "value": 10,数据值
    那实际开发中,如何根据需要进行数据的合并和计算呢?
javascript 复制代码
[{
		"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相同数值的班级合并成一个数组格式如:

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

算法开发

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

javascript 复制代码
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"上。如果没有找到,它会将当前元素添加到结果数组中。最后,它将打印出结果数组。


@漏刻有时

相关推荐
hetao17338374 小时前
2026-10-03~04 hetao1733837 的刷题记录
c++·算法
福兮说5 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
Zootopia6265 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
longlongzihan5 小时前
从LeetCode 70. 爬楼梯看动态规划:如何精准推导状态转移方程?
c++·算法·leetcode·动态规划
2601_960356386 小时前
2027校招采购岗解析:数学基础如何迁移到需求预测、成本与供应商分析
人工智能·算法
凤城老人6 小时前
从 PyQt6 到 Electron:给 Edge TTS 做一个“多角色配音机“的踩坑手记
javascript·typescript·electron
Dovis(誓平步青云)6 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
h_a_o777oah7 小时前
【树论】树链剖分:将树形结构转化为线性结构以处理树上路径问题(洛谷 P3384 附C++代码模板)
数据结构·算法·线段树·acm·树链剖分·树论·重链剖分
HEJOO97 小时前
指针的算术运算详解
java·数据结构·算法
Coder-magician7 小时前
《代码随想录》刷题打卡day47:并查集-part01
数据结构·算法·图论