Javascript: 检查对象是否没有属性或者一个映射/关联数组是否为空

16 浏览
0 Comments

Javascript: 检查对象是否没有属性或者一个映射/关联数组是否为空

有没有一种简单的方法来检查一个对象是否没有属性,在JavaScript中?或者换句话说,检查一个映射/关联数组是否为空?例如,假设你有以下代码:

var nothingHere = {};
var somethingHere = {foo: "bar"};

有没有一种简单的方法来判断哪一个是“空”的呢?我能想到的唯一方法就是这样:

function isEmpty(map) {
   var empty = true;
   for(var key in map) {
      empty = false;
      break;
   }
   return empty;
}

有没有更好的方法(比如原生属性/函数或其他方法)?

0
0 Comments

问题的出现原因是:需要判断一个对象是否没有属性,或者一个map/关联数组是否为空。在这种情况下,直接遍历对象的属性并判断是否有自有属性是一种解决方法。但是,如果存在扩展了Object原型的库,这种解决方法可能不够准确。

解决方法如下:

function isEmpty(map) {
   for(var key in map) {
     if (map.hasOwnProperty(key)) {
        return false;
     }
   }
   return true;
}

这个解决方法是有效的,但是只有在没有扩展Object原型的库存在时才能正常工作。如果存在扩展了Object原型的库,使用hasOwnProperty方法来判断是否有自有属性是非常重要的。这个方法可以防止受到库的影响。感谢提供这个方法的人。

有人评论道,他之前一直使用hasOwnPrototype方法,并且已经习惯了这个方法的存在。这个评论引起了大家的笑声。

通过以上整理,我们可以得出解决这个问题的方法:遍历对象的属性,并使用hasOwnProperty方法来判断是否有自有属性。这样可以确保在存在扩展了Object原型的库时,仍然可以准确判断对象是否没有属性,或者map/关联数组是否为空。

0