使用JavaScript / jQuery检查Object是否为空

时间:2012-12-20 14:07:03

标签: javascript jquery json

我有一个这样的对象:

ricHistory = {
  name1: [{
    test1: value1,
    test2: value2,
    test3: value3
  }],
  name2: [{
    test1: value1,
    test2: value2,
    test3: value3
  }]
};

现在我想检查是否例如使用Javascript / jQuery,name2为空。我知道方法hasOwnProperty。仅当名称存在或不存在时,它才适用于data.hasOwnProperty('name2'),但我必须检查它是否为空。

8 个答案:

答案 0 :(得分:64)

您可以jQuery.isEmptyObject()

执行此操作

检查对象是否为空(不包含任何属性)。

jQuery.isEmptyObject( object )

示例:

jQuery.isEmptyObject({}) // true
jQuery.isEmptyObject({ foo: "bar" }) // false

from Jquery

答案 1 :(得分:7)

试试这个:

if (ricHistory.name2 && 
    ricHistory.name2 instanceof Array &&
    !ricHistory.name2.length) {
   console.log('name2 is empty array');
} else {
   console.log('name2 does not exists or is not an empty array.');
}

上面的解决方案将向您显示richHistory.name2是否存在,是否为数组并且它不为空。

答案 2 :(得分:7)

来自JQuery的另一种语法是你没有使用Prototype或类似的,你更喜欢使用$而不是jQuery前缀;

$.isEmptyObject( object )

答案 3 :(得分:4)

尝试这个有用的功能:

function isEmpty(obj) {
if(isSet(obj)) {
    if (obj.length && obj.length > 0) { 
        return false;
    }

    for (var key in obj) {
        if (hasOwnProperty.call(obj, key)) {
            return false;
        }
    }
}
return true;    
};

function isSet(val) {
if ((val != undefined) && (val != null)){
    return true;
}
return false;
};

答案 4 :(得分:2)

我在代码中一直这样:

假设我的控制器返回如下内容:

usleep()

在Jquery中,我会检查如下:

$return['divostar'] = $this->report->get_additional_divostar_report($data);
$return['success'] = true;
return response()->json($return);

答案 5 :(得分:1)

肮脏但简单且有效:

function isEmptyObject(obj) {
  return JSON.stringify(obj) == '{}';
}

答案 6 :(得分:0)

您可以通过以下方式缩短isSet

function isSet(val) { return ((val != undefined) && (val != null));}

我发现只返回语句的布尔值而不是处理然后返回更容易。

答案 7 :(得分:-2)

if (ricHistory.name2 === undefined) {
   //This is property has not been set (which is not really the same as empty though...)
}