什么是在Javascript中检查数字是否在列表中的最快方法?
我知道indexOf >=,但这对我来说似乎相当慢。
我每秒必须执行数百万次检查,列表相当短(最大〜10个条目)
什么是在Javascript中检查数字是否在列表中的最快方法?
我知道indexOf >=,但这对我来说似乎相当慢。
我每秒必须执行数百万次检查,列表相当短(最大〜10个条目)
可以在jsperf上尝试一下,但我怀疑使用对象并将数字设置为属性会比数组搜索更快。
var theList = { 1: true, 2000: true, 253: true, -12077: true, ... };
if (theList[ someNumber ]) { // see if some number is in the list
话虽如此,在 Web 浏览器中,除非是在极高端的机器上且没有做其他事情,否则你不可能以每秒数百万次的速度执行任何有用的 JavaScript 操作。
最好使用indexof()
作为一种替代方法,你也可以使用Enumerable#include
,但在你的情况下并不被推荐。
你可以使用Enumerable#include,但我怀疑它是否比indexof()
更快。例如:
[1, 2, '3', '4', '5'].include(3);
如果你想要更快的理解速度,请使用array.includes
:
[-1, 1, 2].includes(0) // false
[-1, 1, 2].includes(-1) // true
[-1, 1, 2].includes(-2) // false
[-1, 1, 2].includes(2) // true
[-1, 1, 2].includes(3) // false
new Set([ 2, 3, 5, 7, 11 ]).has(7)
。 - Sebastian Simon