数组indexOf()vs包括()性能取决于浏览器和针位置

时间:2017-12-05 18:04:13

标签: javascript

Array.prototype.indexOf()上的Array.prototype.includes()是否有任何优势,具体取决于浏览器(Chrome,Firefox)和针项位置(在数组的乞讨,中间,结尾)?

Array.prototype.includes vs. Array.prototype.indexOf 没有浏览器特定信息,阵列特定信息中没有位置,我也不会询问NaN值。

3 个答案:

答案 0 :(得分:3)

我使用具有10 000个数值的数组进行了测试,结果如下:

铬:

  • 开始
    • 包括(22,043,904 ops / sec)
    • indexOf(136,512,737 ops / sec)
  • 中间
    • 包括(8,361 ops / sec)
    • indexOf(31,296 ops / sec)
  • 结束
    • 包括(4,018 ops / sec)
    • indexOf(95,221 ops / sec)

火狐:

  • 开始
    • 包括(34,087,623 ops / sec)
    • indexOf(33,196,839 ops / sec)
  • 中间
    • 包括(84,880 ops / sec)
    • indexOf(86,612 ops / sec)
  • 结束
    • 包括(25,253 ops / sec)
    • indexOf(14,994 ops / sec)

因此,Chrome中的indexOf()在所有位置的工作速度都比includes()快得多。

在Firefox中,indexOf()includes()的工作方式几乎相似。

答案 1 :(得分:1)

以下是要比较includes和indexOf的JSperf,它们非常接近,但include()将比最新chrome中的indexOf更快。

我的理解并非所有浏览器都支持包含,但此API更易于理解和维护。

答案 2 :(得分:1)

如果您对表演感到疑惑,这里的JSperf测试往往表明时间越长,includes()越多indexOf

JSperf

恕我直言,我也更愿意写if (arr.includes(el)) {},因为它比if (arr.indexOf(el) !== -1) {}

更清晰,更易于维护