在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:
var a = {};
我该如何检查是否是这种情况?
在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:
var a = {};
我该如何检查是否是这种情况?
当前回答
任何类型的值都为空
/* eslint-disable no-nested-ternary */
const isEmpty = value => {
switch (typeof value) {
case 'undefined':
return true;
case 'object':
return value === null
? true
: Array.isArray(value)
? !value.length
: Object.entries(value).length === 0 && value.constructor === Object;
case 'string':
return !value.length;
default:
return false;
}
};
其他回答
export function isObjectEmpty(obj) {
return (
Object.keys(obj).length === 0 &&
Object.getOwnPropertySymbols(obj).length === 0 &&
obj.constructor === Object
);
}
这包括检查包含符号财产的对象。
Object.keys不检索符号财产。
从jQuery 1.4开始,isEmptyObject()方法检查对象本身的财产和从原型继承的财产(因为它不使用hasOwnProperty)。参数应该始终是一个普通的JavaScript对象,因为其他类型的对象(DOM元素、原始字符串/数字、宿主对象)可能不会在浏览器中提供一致的结果。要确定对象是否为纯JavaScript对象,请使用$.isPlainObject()。
jQuery.isPlainObject({}) // true
jQuery.isPlainObject( "test" ) // false
Jquery api
除了Thevs的回答:
var o = {};
alert($.toJSON(o)=='{}'); // true
var o = {a:1};
alert($.toJSON(o)=='{}'); // false
它是jquery+jquery.json
检查值的新方法是if(Object.entries(this.props.myarticle).length==0){}
这里肌肉是物体
下面的示例显示了如何测试JavaScript对象是否为空,如果我们所说的空是指它没有自己的财产。
该脚本适用于ES6。
常量isEmpty=(obj)=>{如果(obj===空||obj==未定义||Array.isArray(obj)||对象类型!=='对象') {返回true;}return Object.getOwnPropertyNames(obj).length==0;};console.clear();console.log('---');console.log(isEmpty(“”));//真的console.log(isEmpty(33));//真的console.log(isEmpty([]));//真的console.log(isEmpty({}));//真的console.log(isEmpty({length:0,custom_property:[]}));//假的console.log('---');console.log(isEmpty('Hello'));//真的console.log(isEmpty([1,2,3]));//真的console.log(isEmpty({test:1}));//假的console.log(isEmpty({长度:3,自定义属性:[1,2,3]}));//假的console.log('---');console.log(isEmpty(new Date()));//真的console.log(isEmpty(无限));//真的console.log(isEmpty(null));//真的console.log(isEmpty(未定义));//真的