我有一个这样的对象:
ricHistory = {
name1: [{
test1: value1,
test2: value2,
test3: value3
}],
name2: [{
test1: value1,
test2: value2,
test3: value3
}]
};
现在我想检查是否例如使用Javascript / jQuery,name2为空。我知道方法hasOwnProperty
。仅当名称存在或不存在时,它才适用于data.hasOwnProperty('name2')
,但我必须检查它是否为空。
答案 0 :(得分:64)
检查对象是否为空(不包含任何属性)。
jQuery.isEmptyObject( object )
示例:
jQuery.isEmptyObject({}) // true
jQuery.isEmptyObject({ foo: "bar" }) // false
答案 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...)
}