当前位置: 首页 > news >正文

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",}
}]

,如何计算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

解释:

首先,我们使用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;
}

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

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

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

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

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

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

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

如果你希望将字段键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;
}

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

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

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


@漏刻有时

相关文章:

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

项目需求 在js中,格式如: [{"name": "一(0)班-电量,一(9)班-电流,一(9)班-功率","odata": {"prev_0_day_val_diff": "10.189941,-3.0,79.0",} },{"name": "一(10)班-电量,一(10)班-…...

娱乐时间 —— 用python将图片转为excel十字绘

最近看蛮多朋友在玩,要么只能画比较简单的,要么非常花时间。想了下本质上就是把excel对应的单元格涂色,如果能知道哪些格子要上什么颜色,用编程来实现图片转为excel十字绘应该是很方便的。 图片的每一个像素点都可以数值化&#x…...

OJ练习第160题——LRU 缓存

LRU 缓存 力扣链接:146. LRU 缓存 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓…...

使用 Hugging Face Transformer 创建 BERT 嵌入

介绍 最初是为了将文本从一种语言更改为另一种语言而创建的。BERT 极大地影响了我们学习和使用人类语言的方式。它改进了原始 Transformer 模型中理解文本的部分。创建 BERT 嵌入尤其擅长抓取具有复杂含义的句子。它通过检查整个句子并理解单词如何连接来做到这一点。Hugging F…...

unity 控制Dropdown的Arrow箭头变化

Dropdown打开下拉菜单会以“Template”为模板创建一个Dropdown List,在“Template”上添加一个脚本在Start()中执行下拉框打开时的操作,在OnDestroy()中执行下拉框收起时的操作即可。 效果代码如下用于控制Arrow旋转可以根据自己的想法进行修改&#xff…...

Java开发面试--nacos专区

1、 Nacos是什么? 请简要介绍Nacos是什么以及它的主要功能和用途。 答: 简介: Nacos是一个开源的、高性能、动态服务发现、配置和服务管理平台,通常用于微服务架构中。Nacos的名称来源于"Naming"(服务发现…...

GB28181学习(三)——心跳保活

心跳保活 要求: 1. 当原设备发现工作异常时,应立即向本SIP监控域的SIP服务器发送状态信息; 2. 无异常时,定时向本SIP监控域的SIP服务器发送状态信息; 3. 状态信息报送采用**MESSGAE**方法; 4. SIP设备宜在…...

黑马JVM总结(三)

(1)栈内存溢出 方法的递归调用,没有设置正确的结束条件,栈会有用完的一天,导致栈内存溢出 可以修改栈的大小: 再次运行:减少了次数 案例二: 两个类的循环应用问题,导致Js…...

【数据结构】二叉树基础入门

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...

MFC自定义消息的实现方法----(线程向主对话框发送消息)、MFC不能用UpdateData的解决方法

在MFC中,我们一边在使用多线程时,经常会遇到在需要调用到新建的控件,此时建议不要在新建的线程中直接调用主对话框的控件,我们可以通过自定义消息,在新建线程中发送并触发主线程进行相关的界面控件操作。 以Dialog对话…...

Linux单列模式实现线程池

目录 一、单列模式 1.1 单列模式概念以及实现条件 1.2 饿汉模式 1.1.1 饿汉模式代码实现 1.1.2 饿汉模式特征和优缺点 1.3 懒汉模式 1.3.1 懒汉模式代码实现 1.3.2 懒汉模式特征以及优缺点 二、线程池 2.1 线程池概念 2.2 实现简单线程池逻辑 2.3 模拟实现懒汉模式线程…...

汇川PLC学习Day3:轴控代码编写、用户程序结构说明与任务配置示例、用户变量空间与编址

汇川PLC学习Day3:轴控代码编写、用户程序结构说明与任务配置示例、用户变量空间与编址 一、新建轴与轴控代码编写 1. 新建轴 (1)新建一个轴 (2)将轴名字更新为实际名字 可以后面实例化后再更改,汇川可以在更新名字时同步更新…...

javaee springMVC Map ModelMap ModelAndView el和jstl的使用

pom依赖 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …...

vue监听表单输入的身份证号自动填充性别和生日

1&#xff0c;先给表单绑定一个v-model值 <el-input type"number" v-model"form.idCard" placeholder"请输入证件号码" /> 2&#xff0c;使用watch监听输入的值 watch(form, (newName, oldName) > {var numid newName.idCard.split(…...

蓝桥杯官网练习题(翻硬币)

题目描述 小明正在玩一个"翻硬币"的游戏。 桌上放着排成一排的若干硬币。我们用 * 表示正面&#xff0c;用 o 表示反面&#xff08;是小写字母&#xff0c;不是零&#xff09;。 比如&#xff0c;可能情形是&#xff1a;**oo***oooo; 如果同时翻转左边的两个硬币…...

企业架构LNMP学习笔记34

LVS-DR模式&#xff1a; 老师分析&#xff1a; 1、首先用户用CIP请求VIP 2、根据上图可以看到&#xff0c;不管是Director Server还是Real Server上都需要配置VIP&#xff0c;那么当用户请求到达我们的集群网络的前端路由器的时候&#xff0c;请求数据包的源地址为CIP目标地址…...

Python学习之六 循环结构

在很多情况下,我们往往需要循环输入多次,比如,密码最多只能输错3次等。这时候,我们需要使用循环结构。本小节,将学习循环。 一、while循环 while循环的一般形式如下: while 判断条件: 循环语句块 当判断条件为真,便执行循环语句块。比如说,我们需要写一个判断账号…...

flutter 网络地址URL转file

方法1 import dart:io; import package:http/http.dart as http; import package:path/path.dart; import package:path_provider/path_provider.dart;Future<File> _fileFromImageUrl() async {final response await http.get(Uri.parse(https://example.com/xyz.jpg)…...

【JavaEE基础学习打卡07】JDBC之应用分层设计浅尝!

目录 前言一、简单说说应用分层二、实体层1.O/R映射2.O/R映射实践三、数据访问层1.DAO层2.DAO层实战总结前言 📜 本系列教程适用于JavaWeb初学者、爱好者,小白白。我们的天赋并不高,可贵在努力,坚持不放弃。坚信量最终引发质变,厚积薄发。 🚀 文中白话居多,尽量以小白…...

Helm Kubernetes Offline Deploy Rancher v2.7.5 Demo (helm 离线部署 rancher 实践)

文章目录 1. 简介2. 预备条件3. 选择 SSL 配置4. 离线安装的 Helm Chart 选项5. 下载介质6. 生成证书7. 镜像入库8. 安装 rancher9. 配置 nodeport10. 配置 ingress11. 界面访问11.1 首页预览11.2 查看集群信息11.3 查看项目空间11.4 查看节点信息 1. 简介 Rancher 是一个开源…...

VMware Unlocker 终极实战指南:在Windows/Linux上解锁macOS虚拟机完整教程

VMware Unlocker 终极实战指南&#xff1a;在Windows/Linux上解锁macOS虚拟机完整教程 【免费下载链接】unlocker 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 想要在VMware虚拟机中体验macOS系统&#xff0c;却总是遇到兼容性问题&#xff1f;VMware Un…...

Ghidra:从NSA利器到开源社区的逆向工程平台演进

1. Ghidra的前世今生&#xff1a;从NSA内部工具到开源利器 我第一次接触Ghidra是在2019年&#xff0c;当时这个由美国国家安全局(NSA)开发的逆向工程工具突然宣布开源&#xff0c;在整个安全圈引起了不小的震动。作为一个长期使用IDA Pro的老逆向工程师&#xff0c;我抱着试试看…...

时域和频域的能量等价性————帕塞瓦尔定理和普朗歇雷尔定理(Plancherel Theorem)

帕塞瓦尔定理&#xff08;Parsevals theorem&#xff09;本质上是在说&#xff1a;一个信号在“原来的表示里”的总能量&#xff0c;等于它在“频域表示里”的总能量。也可以理解成&#xff1a;傅里叶变换不会凭空创造能量&#xff0c;也不会丢失能量&#xff0c;只是把能量从时…...

Goby模块系统解析:require和import机制的区别与用法

Goby模块系统解析&#xff1a;require和import机制的区别与用法 【免费下载链接】goby Goby - Yet another programming language written in Go 项目地址: https://gitcode.com/gh_mirrors/go/goby Goby作为一款用Go语言编写的新兴编程语言&#xff0c;其模块系统是构建…...

QWEN-AUDIO开源大模型部署:企业私有化语音合成平台建设指南

QWEN-AUDIO开源大模型部署&#xff1a;企业私有化语音合成平台建设指南 1. 项目概述与核心价值 QWEN-AUDIO是基于通义千问Qwen3-Audio架构构建的新一代智能语音合成系统&#xff0c;专为企业级私有化部署设计。这个系统不仅能生成高质量语音&#xff0c;还能通过情感指令微调…...

SAP 系统配置、落地即用的《SAP 成本分摊循环配置清单》,包含事务码、主数据、循环结构、分配 / 分摊规则、计算公式、案例数据

SAP 系统配置、落地即用的《SAP 成本分摊循环配置清单》&#xff0c;包含事务码、主数据、循环结构、分配 / 分摊规则、计算公式、案例数据一、通用主数据&#xff08;所有案例共用&#xff0c;先建好&#xff09;1. 成本中心&#xff08;标准示例&#xff09;成本中心名称类型…...

圣女司幼幽-造相Z-Turbo保姆级教程:cat日志定位问题+Gradio端口映射调试

圣女司幼幽-造相Z-Turbo保姆级教程&#xff1a;cat日志定位问题Gradio端口映射调试 1. 快速了解圣女司幼幽-造相Z-Turbo 圣女司幼幽-造相Z-Turbo是一个专门生成《牧神记》中圣女司幼幽角色图片的AI模型。这个模型基于Z-Image-Turbo的LoRA版本训练而成&#xff0c;能够根据文字…...

NumPy @运算符 vs. * vs. dot():别再混淆了,一文搞懂它们的区别与最佳使用场景

NumPy 运算符 vs. * vs. dot()&#xff1a;别再混淆了&#xff0c;一文搞懂它们的区别与最佳使用场景 在Python科学计算领域&#xff0c;NumPy的矩阵运算操作符选择常常让开发者陷入困惑。当你需要在、*和dot()之间做出选择时&#xff0c;是否曾犹豫过它们究竟有何不同&#xf…...

Haas506+Python轻应用开发避坑指南:驱动冲突/烧录失败/GPIO配置详解

Haas506Python轻应用开发避坑指南&#xff1a;驱动冲突/烧录失败/GPIO配置详解 如果你正在使用Haas506开发板进行Python轻应用开发&#xff0c;大概率会遇到三个让人头疼的问题&#xff1a;驱动冲突导致端口识别异常、固件烧录频繁超时、GPIO配置逻辑不清晰。本文将基于真实项目…...

CLIP ViT-H-14图像特征提取实战:LAION-2B预训练模型在小样本场景表现

CLIP ViT-H-14图像特征提取实战&#xff1a;LAION-2B预训练模型在小样本场景表现 1. 引言 你有没有遇到过这样的问题&#xff1f;手头只有几十张、几百张图片&#xff0c;却想快速搭建一个靠谱的图片搜索系统&#xff0c;或者给图片打上智能标签。传统的深度学习方法往往需要…...