ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何用js数组reduce方法实现统计

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-29 09:20 | 显示全部楼层
继续简化。
360截图20240529091925896.jpg

TA的精华主题

TA的得分主题

发表于 2024-5-29 09:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
都够卷的,参与下,结果和楼主的有一点差异,不知道是不是理解不到位
image.png

TA的精华主题

TA的得分主题

发表于 2024-5-29 13:16 来自手机 | 显示全部楼层
本帖最后由 一江春水1688 于 2024-5-29 13:19 编辑

  2024-5-29 08:16


今铭昔大佬,您这代码信息量超大啊,待我捋捋,慢慢理解学习
res既是键值对对象,又当数组使用,还组合了逗号表达式、逻辑空赋值
还有, res[-1]是什么意思?数组下标还可以是负数?是表示res[”-1“]?

TA的精华主题

TA的得分主题

发表于 2024-5-29 15:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-29 15:40 来自手机 | 显示全部楼层

数据量大,可以考虑sql
create temp table aa as
select  a.f01 x,b.f01 y,(length('金木土火水金土火木金水土')-length(replace('金木土火水金土火木金水土',a.f01||b.f01,'')))/2 z from 统计相邻字符个数 a,统计相邻字符个数 b;
//select * from aa;

cli_create_two_dim_no_order~aa~y~z;
select * from aa_two_dim order by instr('水火木金土',x);
Screenshot_2024-05-29-15-37-28-777_com.mmbox.xbrowser.pro.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-29 16:55 | 显示全部楼层
都是高手啊!一个问题有这么多的解法,认真学习中!

TA的精华主题

TA的得分主题

发表于 2024-5-30 08:13 | 显示全部楼层

首先明白本质,res[1],res[0]的本质上是res["1"], res["0"]。数组是一个对象,所以自然可以当字典来使用,同时也是个特殊的对象,也就是对非0,非正整数的key值不敏感

let res = []
res['-1'] = "abc"
console.log(res['-1'])
res中是存在'-1'此key值,所以可以访问到

res.forEach((_, index) => console.log(index))
但是这个-1不会被遍历出来,因为不是0或正整数,利用此特性,数组可以当简单的字典用,简单的用法就是自己去记录自己添加元素的当前索引值,也就是互为哈希(value可以访问key,key也可以访问value)。在我写的代码中,(res[-1] = [], -1),也就是给res[-1]给个初值,然后返回-1这个值给j,以完成初始化,仅此而已,一个reduce循环,O(n)的效率,还是很快的

在原生JS中,数组额外添加key值用法也有一些,比如RegExp.prototype.exec,或者String.prototype.match返加的值,都是一个数组,同时都有一个index属性

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-30 13:18 来自手机 | 显示全部楼层
本帖最后由 一江春水1688 于 2024-5-30 13:25 编辑
  2024-5-30 08:13
res[1]res[0]res["1"], res["0"] ...

【回复转手机页面,回复内容全部乱码,让人抓狂】
千言万语,化为一句,再次衷心感谢今铭昔大佬的耐心指教!

TA的精华主题

TA的得分主题

发表于 2024-5-30 15:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
今铭昔 发表于 2024-5-30 08:13
首先明白本质,res[1],res[0]的本质上是res["1"], res["0"]。数组是一个对象,所以自然可以当字典来使用 ...

reduce()初始化值为何定义成:[[,]]?请大佬指点!

TA的精华主题

TA的得分主题

发表于 2024-5-30 18:10 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
xd3210 发表于 2024-5-30 15:00
reduce()初始化值为何定义成:[[,]]?请大佬指点!

相当于
[[undefined]]


[1,,3,,5]
等同于
[1,undefined,3,undefined,5]

可以理解为一种语法糖,省略元素的写法
在这里的[,],就是第0行,因为空出一个,所以A1单元格是空值

评分

2

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-14 14:43 , Processed in 0.042757 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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