答案 0 :(得分:2)
您可以使用随机数来查找对象。
指数:
var i = Math.floor(Math.random() * 10),
o = array[i];
vs Find:
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(与EDGE):
Index: 31,707,818 ±0. 92% fastest
Find: 5,001,388 ±1.51% 84% slower
<强>结论强>
使用Array#find
时,索引访问速度更快。
答案 1 :(得分:1)
两个样本都不到0毫秒
var now = new Date();
var items = [{id: 0}, {id: 1}, {id: 2}, {id: 3}];
var item = items[2];
document.write((new Date().getTime() - now.getTime()) + 'ms');
&#13;
var now = new Date();
var items = [{id: 0}, {id: 1}, {id: 2}, {id: 3}];
var item = items.find(e => e.id === 2);
document.write((new Date().getTime() - now.getTime()) + 'ms');
&#13;
但是对于100K阵列大小,图片是不同的
var items = [];
for(var id = 0; id < 100000; id++) {
items.push({id: id});
}
var now = new Date();
var item = items[99999];
document.write((new Date().getTime() - now.getTime()) + 'ms');
&#13;
var items = [];
for(var id = 0; id < 100000; id++) {
items.push({id: id});
}
var now = new Date();
var item = items.find(e => e.id === 99999);
document.write((new Date().getTime() - now.getTime()) + 'ms');
&#13;
正如您所看到的,索引的直接访问速度要快得多,因为find
方法应该在找到正确的项之前检查很多项。即主题启动器假设(通过索引直接访问比find
方法慢)显然是不正确的