Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从编程角度来看,确定for循环是否可以在对象上运行的最佳解决方案_Javascript_Jquery_For Loop_Foreach_Each - Fatal编程技术网

Javascript 从编程角度来看,确定for循环是否可以在对象上运行的最佳解决方案

Javascript 从编程角度来看,确定for循环是否可以在对象上运行的最佳解决方案,javascript,jquery,for-loop,foreach,each,Javascript,Jquery,For Loop,Foreach,Each,在研究中,我试图找到最快的方法来确定一个对象是否有值,以及是否可以在该对象上执行for。 参考: 我过去经常这样做,但在与一位同事讨论时,他使用了这两种方法。我们一起查找,发现这两种方法都很慢,需要改进 if(Object.keys(X).length > 0) { // Execute For } 以下是我所知道的: obj instanceof Object 及 因为null是一个对象,所以两者都有各自的缩进,但也许还有另一种更优越的方法 for的循环可以在任何对象上执行

在研究中,我试图找到最快的方法来确定一个对象是否有值,以及是否可以在该对象上执行for。 参考

我过去经常这样做,但在与一位同事讨论时,他使用了这两种方法。我们一起查找,发现这两种方法都很慢,需要改进

if(Object.keys(X).length > 0) {
    // Execute For
}
以下是我所知道的:

obj instanceof Object 


因为null是一个对象,所以两者都有各自的缩进,但也许还有另一种更优越的方法

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

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

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

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

空对象如何?您的代码将以不同的方式对待它们。那么您实际需要什么呢?您是指in
、of
还是(i=0;i)在空列表上执行循环的危害是什么?
for(var i in obj) {
    if(obj.hasOwnProperty(i)) {
        //do stuff here...
    }
}