JS数据处理(冒泡寻找对象里面有个Key相同的值并处理相关数据)

1.需要处理成的数据格式

[{
mpptNumber: 1,
list:[
	{
		checked: false,
		pvEnableStatus: 0,
		pvSerialNumber: 1,
	},
	{
		checked: false,
		pvEnableStatus: 0,
		pvSerialNumber: 2,
	}]
},
{
mpptNumber: 2,
list:[
	{
		checked: false,
		pvEnableStatus: 0,
		pvSerialNumber: 1,
	},
	{
		checked: false,
		pvEnableStatus: 0,
		pvSerialNumber: 3,
	}]
}]

2.原始数据

      "pvConfigList": [
            {
                "mpptNumber": 1,
                "pvSerialNumber": 1,
                "pvEnableStatus": 0,
                "pvEnableStatusStr": "0.00"
            },
            {
                "mpptNumber": 1,
                "pvSerialNumber": 2,
                "pvEnableStatus": 0,
                "pvEnableStatusStr": "0.00"
            },
             {
                "mpptNumber": 2,
                "pvSerialNumber": 1,
                "pvEnableStatus": 0,
                "pvEnableStatusStr": "0.00"
            },
            {
                "mpptNumber": 2,
                "pvSerialNumber": 3,
                "pvEnableStatus": 0,
                "pvEnableStatusStr": "0.00"
            }
        ],

3.封装方法

// 格式化光伏数据
const formatePvcData = (pvConfigList) => {
  // 创建一个空数组来存储处理后的对象
  const resultArray = [];

  // 遍历原始数组
  pvConfigList.forEach((item) => {
    // 检查是否已经有对应的mpptNumber在resultArray中
    const existingObj = resultArray.find(
      (obj) => obj.mpptNumber === item.mpptNumber
    );

    if (existingObj) {
      // 如果存在,则向该对象的list中添加一个新的pv配置
      existingObj.list.push({
        pvSerialNumber: item.pvSerialNumber,
        pvEnableStatus: item.pvEnableStatus, // 注意这里使用字符串,因为原数据是字符串
        checked: item.pvEnableStatus == 0 ? false : true,
      });
    } else {
      // 如果不存在,则创建一个新的对象并添加到resultArray中
      resultArray.push({
        mpptNumber: item.mpptNumber,
        list: [
          {
            pvSerialNumber: item.pvSerialNumber,
            pvEnableStatus: item.pvEnableStatus, // 注意这里使用字符串,因为原数据是字符串
            checked: item.pvEnableStatus == 0 ? false : true,
          },
        ],
      });
    }
  });

  // 返回处理后的数组
  return resultArray;
};

4.展示效果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值