哪个是性能更高的array.includes或string.includes?

sha*_*a n 13 javascript arrays string performance

我试图找出哪个性能更高:

let array = [1,2,3,4]
array.includes(4)
Run Code Online (Sandbox Code Playgroud)

要么

let str = "1234";
str.includes(4);
Run Code Online (Sandbox Code Playgroud)

并试图通过执行以下方法找到它:

console.time();
let ar = [1,2,3,4,5];
ar.includes(4);
console.timeEnd();

console.time();
let str = "12345";
str.includes("4");
console.timeEnd();
Run Code Online (Sandbox Code Playgroud)

在控制台和页面内的脚本中.当从控制台直接执行时,时间是这样的,array.includes占用的时间最少.从页面执行时,报告的时间使得string.includes花费的时间更少.是什么赋予了?!

Aft*_*han 8

使用少量值进行测试:

结论:array.includes快于string.includes

然后我尝试将值的数量增加到~100:

结果相同:array.includes比快string.includes


如果您对实现算法感兴趣,可以在这里查看:


PS:在你的情况下,我认为变量声明在Array Incldues测试中比在字符串声明中花费更多时间.如果将声明移出计时器,您还应该看到一致的结果.

证明: 证明

字符串声明占用声明数组所用时间的十分之一

  • `Array.prototype.includes`获取值,循环遍历数组并尝试将循环值与搜索值匹配,而另一方面`String.prototype.includes`不仅需要循环遍历字符串(string = array) chars),但它需要比较多个值.假设您选择`string.includes("Foo");`字符串`abcFoo`.它搜索`F`,然后尝试将'F`之后的下一个索引与'o`进行比较,然后将另一个索引与你指定的其他字符进行比较.它可能就是这样,但这只是我个人的想法 - 没有任何证据. (2认同)