javascript - 为什么通过索引访问数组元素比使用 .find() 函数慢?

标签 javascript arrays

对于下面的特定情况,使用 .find 函数似乎比简单地使用元素索引要快得多。这是为什么?

jsPerf Results

最佳答案

您可以使用不同的方法,即使用随机数来查找对象。

索引:

var i = Math.floor(Math.random() * 10),
    o = array[i];

与查找:

var i = Math.floor(Math.random() * 10),
    o = array.find(o => o.id === i);

使用共享数据

var array = [{ id: 0 }, { id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }, { id: 8 }, { id: 9 }];

然后你从 jsperf 得到(带边缘):

Index: 31,707,818 ±0.    92% fastest
Find:   5,001,388 ±1.51% 84% slower

结论

索引访问比使用 Array#find 更快.

关于javascript - 为什么通过索引访问数组元素比使用 .find() 函数慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45435809/

相关文章:

javascript - 在 Angular2 中使用 guard 捕获重定向路由

javascript - 解析并构造一个复杂的json

java - 轻松覆盖 Java 内置类的 toString()

c - 如何在 C 中将连续数组作为参数传递?

php - array_keys() 和 array_values() 拆分数组后元素顺序是否相同?

javascript - 在 iOS 设备上停止 css 转换时元素会抖动

javascript - 无法在 webrtc 中添加远程 ice candidate

javascript - 使用许多 Javascript 函数

javascript - 如何通过单击任意位置但排除内容本身来关闭内容?

arrays - 检查是否只能使用数组中的数字组成从 1 到 K 的所有数字