【问题标题】:Programatically the best solution to determine if for loop can be run on object以编程方式确定是否可以在对象上运行 for 循环的最佳解决方案
【发布时间】:2016-06-21 15:17:05
【问题描述】:

在研究中,我试图找到最快的方法来确定一个对象是否具有值,并且可以在该对象上执行 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 infor of 还是for (i=0; i<…length; i++) 循环?
  • 在空列表上执行循环有什么危害?

标签: javascript jquery for-loop foreach each


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2011-10-17
    • 2020-11-27
    • 2014-12-15
    相关资源
    最近更新 更多