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

Programatically the best solution to determine if for loop can be run on object

本文关键字:for 运行 循环 解决方案 最佳 对象 方式确 编程 是否      更新时间:2023-09-26

在研究中,我试图找到最快的方法来确定对象是否有值并且可以在对象上执行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 是一个对象,所以两者都有其缺点,但也许还有另一种更优越的方法。

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

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

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

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