猿问

考虑性能如何查找对象数组

问题: 已知一个数组,里面有非常多个json对象,对应的代码格式如下


// ...代表多个相同属性的json对象

const RNG = [{"name": "麻辣香锅", "age": "20"}, {"name": "小虎", "age": "20"}, ...]

希望在性能较优的情况下,在数组中找到属性名name为小狗所对应的age为多少


我能想到的最简单的办法是for循环遍历,但是这种办法需要遍历整个数组,如果数组非常大,那么就非常消耗性能,请问有没有什么更优的办法?


智慧大石
浏览 493回答 2
2回答

阿波罗的战车

没有我大clearlove8888888,并不想回答这个问题。开玩笑,我认为在不改变数组模式的情况下for循环是性能最优的,也就是说我觉得如果你要提高性能,必须得改变数据储存方式。

哔哔one

想快自然需要空间换时间了(()=>{&nbsp; &nbsp; const RNG = new Array(100000).fill(0).map((v,index)=>{return {name: index}});&nbsp; &nbsp; const RNG2 = new Array(100000).fill(0).reduce((res, curr, index)=>{res[""+index] = index;return res;}, {});&nbsp; &nbsp; const testTimes = 100000;&nbsp; &nbsp; console.time("RNG");&nbsp; &nbsp; for(var i=0;i<testTimes;i++){&nbsp; &nbsp; &nbsp; &nbsp; for(var j=0,l=RNG.length;j<l;j++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(RNG[j].name === 50000){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; console.timeEnd("RNG");&nbsp; &nbsp; console.time("RNG2");&nbsp; &nbsp; for(var i=0;i<testTimes;i++){&nbsp; &nbsp; &nbsp; &nbsp; RNG2["50000"];&nbsp; &nbsp; }&nbsp; &nbsp; console.timeEnd("RNG2");})();
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答