• javascript实战开发:json数据求指定元素的和算法


    项目需求

    在js中,格式如:

    [{
        "name": "一(0)班-电量,一(9)班-电流,一(9)班-功率",
        "odata": {
            "prev_0_day_val_diff": "10.189941,-3.0,79.0",
        }
    },{
        "name": "一(10)班-电量,一(10)班-电流,一(10)班-功率",
        "odata": {
            "prev_0_day_val_diff": "10.20,-3.0,79.0",
        }
    }]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    ,如何计算prev_0_day_val_diff中的第一个元素相加的和。

    核心算法开发

    假设你的数据存储在变量data中,你可以使用mapreduce函数来计算prev_0_day_val_diff中的第一个元素相加的和。

    以下是示例代码

    const data = [
      {
        "name": "一(0)班-电量,一(9)班-电流,一(9)班-功率",
        "odata": {
          "prev_0_day_val_diff": "10.189941,-3.0,79.0",
        }
      },
      {
        "name": "一(10)班-电量,一(10)班-电流,一(10)班-功率",
        "odata": {
          "prev_0_day_val_diff": "10.189941,-3.0,79.0",
        }
      }
    ];
    
    const sum = data.map(item => {
      const values = item.odata.prev_0_day_val_diff.split(',');
      return parseFloat(values[0]);
    }).reduce((a, b) => a + b, 0);
    
    console.log(sum); // 输出:20.379882
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    解释:

    首先,我们使用map函数遍历data数组中的每个元素。对于每个元素,我们将其odata.prev_0_day_val_diff字符串拆分为一个数组,并返回第一个元素(即索引为0的元素),并将其转换为浮点数。

    接下来,我们使用reduce函数将所有返回的浮点数相加。reduce函数接受两个参数:一个累加器(在本例中为0)和一个回调函数,该函数将在每个元素上调用,并将累加器的值更新为回调函数的返回值。在本例中,回调函数将累加器的值(即之前所有元素的总和)和当前元素的值相加,并返回结果。最终,sum变量将包含所有元素的总和。

    封装函数指定第N个元素

    要指定prev_0_day_val_diff中的第几位元素相加,你可以将索引作为参数传递给函数,并在函数内部使用该索引来获取相应的元素。下面是一个示例函数:

    function calculateSum(data, index) {
      const sum = data.reduce((accumulator, item) => {
        const values = item.odata.prev_0_day_val_diff.split(',');
        return accumulator + parseFloat(values[index]);
      }, 0);
    
      return sum;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这个函数接受两个参数:data数组和要相加的元素的索引。它使用reduce函数遍历data数组,并将累加器的初始值设置为0。在每个元素上,它将prev_0_day_val_diff字符串拆分为数组,并将索引对应的元素转换为浮点数,并将其与累加器的值相加。最后,函数返回计算得到的总和。

    你可以通过调用这个函数并传递相应的参数来计算prev_0_day_val_diff中指定索引的元素之和。例如,要计算第一个元素之和,可以这样调用函数:

    const sum = calculateSum(data, 0);
    console.log(sum); // 输出:20.379882
    
    • 1
    • 2

    要计算第二个元素之和,可以这样调用函数:

    const sum = calculateSum(data, 1);
    console.log(sum); // 输出:-6.0
    
    • 1
    • 2

    以此类推,你可以根据需要指定不同的索引来计算相应的元素之和。

    将字段键改成变量的封装函数

    如果你希望将字段键prev_0_day_val_diff也换成指定的变量,你可以将字段键作为函数的第三个参数,并在函数内部使用这个变量来访问相应的字段。

    下面是一个示例函数,它接受三个参数:data数组、要相加的元素的索引和字段键。

    function calculateSum(data, index, fieldKey) {
      const sum = data.reduce((accumulator, item) => {
        const values = item[fieldKey].split(',');
        return accumulator + parseFloat(values[index]);
      }, 0);
    
      return sum;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    你可以通过调用这个函数并传递相应的参数来计算指定字段键和指定索引的元素之和。例如,要计算prev_0_day_val_diff字段中第一个元素之和,可以这样调用函数:

    const sum = calculateSum(data, 0, 'prev_0_day_val_diff');
    console.log(sum); // 输出:20.379882
    
    • 1
    • 2

    同样地,你可以根据需要指定不同的字段键和索引来计算相应的元素之和。


    @漏刻有时

  • 相关阅读:
    Parallels 将扩展桌面平台产品,以进一步改善在 Mac 上运行 Windows 的用户体验和工作效率
    温度和pH双重响应荧光功能聚合物纳米/聚合物超细纤维AIE微球/AIE有机荧光分子的探讨
    python中使用多线程批量导入包
    Java生成 word报告
    快速入门python基础语法二(附加实现人生重开模拟器小案例)
    MyBatis-Plus实现SQL执行前统一处理添加只读标识等注释
    微信小程序clearInterval无法关闭时间间隔器问题解决
    信号完整性分析基础知识之有损传输线、上升时间衰减和材料特性(十):有损传输线在时域中的表现
    前端开发:JS生成32随机数的方法
    如何在 WSL 下实现 NGINX 反向代理
  • 原文地址:https://blog.csdn.net/weixin_41290949/article/details/132797725