以编程方式确定for循环是否可以在对象上运行的最佳解决方案

时间:2016-03-07 21:32:36

标签: javascript jquery for-loop foreach each

在研究中,我试图找到确定对象是否具有值的最快方法,并且可以在对象上执行for。 参考https://jsperf.com/jquery-each-vs-each-vs-for-loop/2

我曾经这样做,但在与同事讨论时,他正在使用.each,我们一起查看,发现两种方法都很慢,需要改进。

if(Object.keys(X).length > 0) {
    // Execute For
}

以下是我所知道的:

obj instanceof Object 

typeof(obj) == "object" and obj !== "null"

因为null是一个对象,两者都有它们的缺点,但也许还有另一种更优越的方法。

1 个答案:

答案 0 :(得分:0)

可以对任何对象执行for循环,因此此处无需检查。也许您需要考虑要迭代的对象上的哪些属性,但这取决于应用程序。

通常在迭代对象时,代码可能如下所示:

for(var i in obj) {
    if(obj.hasOwnProperty(i)) {
        //do stuff here...
    }
}

hasOwnProperty检查确保您仅使用添加到对象本身而不是其原型的值。