ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 388|回复: 10

[求助] 条件求和

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-1 08:43 | 显示全部楼层 |阅读模式
本帖最后由 恶魔在人间 于 2024-6-1 14:48 编辑

js学习求助条件求和

JS练习2-条件求和.rar

24.29 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2024-6-1 12:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
参与下,这个效果
录制_2024_06_01_12_51_33_641.gif

TA的精华主题

TA的得分主题

发表于 2024-6-1 12:52 | 显示全部楼层
JSA代码
  1. function 提取(){
  2.         const arr=Range("e3:j3").Value2[0];
  3.         let res=[arr[0], arr[1]];
  4.         for (let i=2;i<arr.length;i+=2){
  5.                 if (res[0]<=arr[i]) [res[0], res[1]]=[arr[i], res[0]<arr[i]?arr[i+1]:Math.max(res[1],arr[i+1])];
  6.         }
  7.         Range("c3:d3").Value2=res;
  8. }
复制代码

TA的精华主题

TA的得分主题

发表于 2024-6-1 12:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
附件打开测试

工作簿1(2).zip

12.4 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2024-6-1 13:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
image.png

工作簿1(2).zip

9.03 KB, 下载次数: 4

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-1 14:09 | 显示全部楼层

3楼的代码,算是正常循环思路,容易看懂,有一定基础都可以写。
可是大佬,看您的代码真的烧脑啊
reduce的回调函数,其参数正常不是只能3个吗?分别是“累加值”,当前值,索引值,您这多出的参数a是指什么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-1 14:48 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-1 14:49 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-6-1 16:23 | 显示全部楼层

通过AI搜索找到答案了:

[color=rgba(0, 0, 0, 0.9)]在JavaScript中,Array.prototype.reduce()方法的回调函数接受四个参数:

  • Accumulator (acc): 累计器,累计回调函数的返回值,它是上一次回调时返回的累积值,或者是reduce()方法的第二个参数initialValue(如果提供了的话)。
  • Current Value (cur): 当前值,数组中正在处理的元素。
  • Current Index (idx): 当前索引,数组中正在处理的元素的索引。如果提供了initialValue,则索引号将从0开始;否则,将从1开始,因为索引0已被initialValue占用。
  • Source Array (src): 源数组,调用reduce()方法的数组。

TA的精华主题

TA的得分主题

发表于 2024-6-1 16:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
看了铭佬代码,大受启发,原来return后面也能这么写?不过只有两点思路不同,[x,y]的初始值我认为应该还是来自于E3:J3单元格本身,而不是[0,0]。
  1. function 提取2(){
  2.         const res=Range("e3:j3").Value2[0].reduce(([a,b],x,i,ar)=>{
  3.                 return !(i % 2) && a<=x?[a,b]=[x, a<x?ar[i+1]:Math.max(b, ar[i+1])]:null, [a,b];
  4.         },Range("e3:f3").Value2[0]);
  5.         Range("c3:d3").Value2=res;
  6. }
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 16:13 , Processed in 0.050611 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表