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


    项目需求

    使用javascript,在格式如下:

    [{
        "data":{
            propertyType: "电量,A相电流,电功率"
         },
        "odata": {
            "prev_0_day_val_diff": "10.189941,-3.0,79.0",
        }
    },{
     "data":{
            propertyType: "A相电流,电功率,电量"
         },
        "odata": {
            "prev_0_day_val_diff": "10.189941,-3.0,79.0",
        }
    }]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    如何获取和propertyType中电量所在一样位置的prev_0_day_val_diff中的数字,并求和

    简单计算

    首先,我们需要解析这个JSON数组,然后找出"propertyType"中"电量"的位置,然后获取相应位置的"prev_0_day_val_diff"值,最后求和。以下是一个可能的JavaScript解决方案:

    let data = [{
        "data":{
            propertyType: "电量,A相电流,电功率"
         },
        "odata": {
            "prev_0_day_val_diff": "10.189941,-3.0,79.0",
        }
    },{
     "data":{
            propertyType: "A相电流,电功率,电量"
         },
        "odata": {
            "prev_0_day_val_diff": "10.189941,-3.0,79.0",
        }
    }];
    
    let sum = 0;
    
    for(let i = 0; i < data.length; i++) {
        let propertyType = data[i].data.propertyType.split(",");
        let prev_0_day_val_diff = data[i].odata.prev_0_day_val_diff.split(",");
        
        for(let j = 0; j < propertyType.length; j++) {
            if(propertyType[j] === "电量") {
                sum += parseFloat(prev_0_day_val_diff[j]);
            }
        }
    }
    
    console.log(sum); // 输出结果
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    这个脚本将遍历每个对象,然后在"propertyType"中查找"电量"的位置,然后获取相应位置的"prev_0_day_val_diff"值,然后将其解析为浮点数并添加到总和中。最后,它将打印出总和。

    封装函数,全局使用

    const data = [
        {
          "data": {
            propertyType: "电量,A相电流,电功率"
          },
          "odata": {
            "prev_0_day_val_diff": "10.189941,-3.0,79.0"
          }
        },
        {
          "data": {
            propertyType: "A相电流,电功率,电量"
          },
          "odata": {
            "prev_0_day_val_diff": "10.189941,-3.0,79.0"
          }
        }
      ];
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    function calculateSum(data) {
     
      let sum = 0;
    
      for (let i = 0; i < data.length; i++) {
        let propertyType = data[i].data.propertyType.split(",");
        let prev_0_day_val_diff = data[i].odata.prev_0_day_val_diff.split(",");
    
        for (let j = 0; j < propertyType.length; j++) {
          if (propertyType[j] === "电量") {
            sum += parseFloat(prev_0_day_val_diff[j]);
          }
        }
      }
    
      return sum;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    可以通过调用 calculateSum() 函数来获取结果。


    @漏刻有时

  • 相关阅读:
    java8日期时间API的一些使用 | 转字符串 | 格式化等
    饮品类公众号引流到企微,搭建私域模型,实现粉丝快速增长
    软件设计师教程(一)计算机系统知识-计算机系统基础知识
    ECMAScript 6 入门教程
    关于大语言模型LLM相关的数据集、预训练模型、提示词、微调的文心一言问答
    【读书笔记】《大数据之路》——维度设计总结(3)
    Octave安装
    软件测试岗:阿里三面,幸好做足了准备,已拿offer
    [附源码]计算机毕业设计springboot线上社区管理系统
    vue-template-compiler的作用
  • 原文地址:https://blog.csdn.net/weixin_41290949/article/details/132798941