【发布时间】:2013-10-28 20:31:33
【问题描述】:
在 Ruby 中,查找字符串是否在数组中 (.include? x) 非常慢。如果您将该数组更改为一个集合,则 BAM,快速查找。
在没有集合的 JavaScript 中,数组查找 (.indexOf(x) >= 0) 也非常很慢,但是我需要在脚本中执行 10,000 次这样的查找。
我的 Ruby 版本(带有集合)在 0.125 秒内运行,我的 JavaScript 版本(在 NodeJS 中)需要 29!
是否有任何集合库或更好的方法来执行数组查找,可以获得接近 Ruby 的 Javascript 速度?
编辑:将“对象”更改为“字符串”以消除任何混淆
【问题讨论】:
-
对象的结构是什么?如果它们具有某种唯一的 id 属性,则可以使用该 id 作为键将它们存储在对象中。
-
@nnnnnn 这只是一个字符串数组 (
["foo", "bar", "baz"])。抱歉,我没有说清楚。 -
唯一字符串?尝试对象
var o = {"foo":1,"bar":1,"baz":1},然后尝试if ("foo" in o) { /*exists*/ }。 -
你试过上面提到的
"string" in foo计时吗? -
@asifrc 哇,它完美无瑕!脚本在
0.250秒内完成!谢谢大家!
标签: javascript arrays set