为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

智慧大石 2019-02-19 17:18:50
问题: 已知一个数组,里面有非常多个json对象,对应的代码格式如下// ...代表多个相同属性的json对象const RNG = [{"name": "麻辣香锅", "age": "20"}, {"name": "小虎", "age": "20"}, ...]希望在性能较优的情况下,在数组中找到属性名name为小狗所对应的age为多少我能想到的最简单的办法是for循环遍历,但是这种办法需要遍历整个数组,如果数组非常大,那么就非常消耗性能,请问有没有什么更优的办法?
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

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

查看完整回答
反对 回复 2019-02-26
?
哔哔one

TA贡献1854条经验 获得超8个赞

想快自然需要空间换时间了


(()=>{

    const RNG = new Array(100000).fill(0).map((v,index)=>{return {name: index}});

    const RNG2 = new Array(100000).fill(0).reduce((res, curr, index)=>{res[""+index] = index;return res;}, {});

    const testTimes = 100000;


    console.time("RNG");

    for(var i=0;i<testTimes;i++){

        for(var j=0,l=RNG.length;j<l;j++){

            if(RNG[j].name === 50000){

                break;

            }

        }

    }

    console.timeEnd("RNG");


    console.time("RNG2");

    for(var i=0;i<testTimes;i++){

        RNG2["50000"];

    }

    console.timeEnd("RNG2");

})();


查看完整回答
反对 回复 2019-02-26
  • 2 回答
  • 0 关注
  • 492 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信