【发布时间】:2026-01-25 23:30:01
【问题描述】:
想象你在 javascript/NodeJs 中有 3 个列表/数组
- 数组包含 1.000.000 个数据项
- 数组包含 100.000 个数据项
- 数组包含 50.000 个数据项
每个数据项都是一个具有 2 个属性的对象 - 例如日期和价格。 数组 2 和 3 中的所有项都是数组 1 中项的子集/子列表。
我的问题:我如何以最快的方式 - 匹配数组 1 中每个项目的所有日期 - 与数组 2 和 3 中的所有日期 - 匹配数组 1 中的每个项目?
我习惯了 .NET/C# - 'contains(item)' 之类的东西很好......现在在 NodeJS 中我使用 3 个 for 循环 - 这是一种减慢速度的方式......我需要一些索引之类的以加快进程...
数据示例如下:
输入:
array 1: 1,2,3,4,5,6,7,8,10
array 2: 2,3,5,7,9
array 3: 1,4,5,10
输出(写入文件):
1,'',1
2,2,''
3,3,''
4,'',4
..ect...
【问题讨论】:
-
是否有重复的日期?日期是
Date对象还是字符串?您能否包含一个示例对象,其中包含将匹配和不匹配的日期和价格?另外,您使用了多少 RAM? -
在我的 postgresql 数据库中,日期保存为“带时区的时间戳”。 “2014-12-01 05:33:56.761199+00”数据项示例:new TradePoint(date, price) - 如果日期匹配,则将价格添加到新列表/行...关于内存,只要可能... 2-4-8gb...每个列表中没有重复的日期/项目。
-
@PabloDK,数组是否保证提前排序?
-
你使用数组而不是对象有什么原因吗?
-
让我重新表述我的问题:不要使用具有 2 个属性的小对象并将其推送到数组中。是否有任何其他结构/类型的集合在 javascript 中更快/性能更好(尤其是关于尽快在数组中找到给定对象)?
标签: javascript arrays node.js performance indexing