var a = new Array(1<<20)
var noop = function () {}
var f1 = function () {
for(var i = 0; i < a.length; i++) noop();
}
var f2 = function () {
for(var i = 0, len = a.length; i < len; i++) noop();
}
for(var i = 0; i < 1000; i++) {
f1();
f2();
}
console.time("f1");
f1();
console.timeEnd("f1");
console.time("f2");
f2();
console.timeEnd("f2");
const json=[{a:1,b:2},{a:2,b:1}…,{a:10001,b:1}]; const map={}; for(let i=0;i<json.length;i++){ map[json[i].a]=json[i]; } console.log(map[“10001”]);
for循环比较耗时,但只要耗时一次。之后使用map对象。极速
console.log(map[“10001”].b);
老的最佳实践果然还没过时
测试代码
结果
node -v
除非只用一次,就用
arr.find(item => item.a === 1), 再取 b 的值。 否则通常可以转成一个 map 再查:_.keyBy 可以用原生的 reduce 实现,很简单
如果是高频使用场景,还是用数据库来实现吧。