阵列indexof()vs包括()完整性,具体取决于浏览器和针头位置



根据浏览器(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%

最新更新