javascript – 哪个更快,For Loop或.hasOwnProperty?

前端之家收集整理的这篇文章主要介绍了javascript – 哪个更快,For Loop或.hasOwnProperty?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在开展一个项目,我需要从一个巨大的用户数据列表中提取被排除用户的列表.这让我想知道在数组中使用带有排除id的double for循环是否更快.或者,如果将id放在对象属性中并使用.hasOwnProperty()更快.

var mainList = LARGE JSON OBJECT OF DATA.
var eArray = ["123456","234567","345678","456789","012345"];
var eObject = {"123456":"0","234567":"0","345678":"0","456789":"0","012345":"0"};

使用Double For Loop方法

for(i=0; i < mainList.length; i++){
    for(j=0; j < eArray.length; j++){
        if(mainList[i]['id'] === eArray[j]){
           //Do Something
        }
    }
}

使用.hasOwnProperty()方法

for(i=0; i < mainList.length; i++){
    if(eObject.hasOwnProperty(mainList[i]['id'])){
       //Do Something
    }
}

我意识到还有其他方法可以使循环更快,比如在变量中存储长度.我试图简化这个.

感谢您提供任何信息.

最佳答案
如果你考虑一下,那么.hasOwnProperty()方法会更快,因为它只使用1 for循环.

错误

我其实有点惊讶.我期待双循环更慢.但我想你无法估计for循环的速度.

双循环

虽然这对我来说似乎是最慢的,但这实际上最终成为7,291,083次/秒的最快成长

.hasOwnProperty()

我可以看到这会慢,因为函数比语句慢.这个长度为1,730,588次/秒

if..in

@Geuis回答包括if..in语句,并认为我会测试速度似乎最快但是在2,715,091 ops / sec的长度仍然没有击败for循环.

结论

For循环很快.双循环运行速度比使用.hasOwnProperty()快4倍,比使用if..in条件快3倍.但是,表现并不明显;所以速度真的非常重要,你需要使事情复杂化.在我看来,if..in方法是要走的路.

在您的浏览器中Test this yourself.我使用的是Google Chrome 28.

更新

重要的是要注意使用for..in声明将为您提供最佳性能.

原文链接:https://www.f2er.com/jquery/428711.html

猜你在找的jQuery相关文章