根据浏览器(chrome,firefox)和针料(在乞eg,中间,中间,中间,,阵列的结尾)?
array.prototype.includes vs. array.prototype.indexof没有浏览器特定信息,数组特定信息中没有位置,我也不询问NaN
值。
我使用具有10 000个数字值的数组进行了测试,这是结果:
chrome:
- 开始
- 包括(22,043,904 OPS/sec)
- 索引(136,512,737 OPS/sec)
- 中间
- 包括(8,361 OPS/sec)
- 索引(31,296 OPS/sec)
- 结束
- 包括(4,018 OPS/sec)
- 索引(95,221 OPS/sec)
firefox:
- 开始
- 包括(34,087,623 OPS/sec)
- 索引(33,196,839 OPS/sec)
- 中间
- 包括(84,880 OPS/sec)
- 索引(86,612 OPS/sec)
- 结束
- 包括(25,253 OPS/sec)
- 索引(14,994 OPS/sec)
所以,Chrome中的indexOf()
的工作速度比includes()
在所有位置都要快得多。
在Firefox中,indexOf()
和includes()
的工作几乎相似。
如果您想知道性能,这是一个jsperf测试,它倾向于表明更多的时间过去,更多的includes()
将比indexOf
更快。
jsperf
IMHO,我也更喜欢编写if (arr.includes(el)) {}
,因为它比if (arr.indexOf(el) !== -1) {}
这是要比较和索引的jsperf,它们非常接近,但是Include()将比最新Chrome中的索引快。
我的理解并非所有浏览器支持都包含,尽管此API易于理解和维护。
因为jsperf降低了,这里是由jsben.ch带有chrome
的随机10K字符串几乎相同
- 索引:3.632.773( 100%)
- 包括:3.625.316( 99.79%)
随机10K数组巨大的diff
- 索引:3.441.975( 100%)
- 包括:197.796( 5.75%)