在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:
var a = {};
我该如何检查是否是这种情况?
在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:
var a = {};
我该如何检查是否是这种情况?
当前回答
你最想知道的是,在使用对象之前,它是否有财产。因此,不要询问isEmpty,然后总是检查if(!isEmption(obj))之类的否定,你可以只测试对象是否为null,是否有财产
export function hasProperties(obj): boolean {
return obj && obj.constructor === Object && Object.keys(obj).length >= 1;
}
其他回答
对于有相同问题但使用jQuery的人,可以使用jQuery.isEmptyObject。
这就是我想到的,用来判断对象中是否有任何非空值。
function isEmpty(obj: Object): Boolean {
for (const prop in obj) {
if (obj.hasOwnProperty(prop)) {
if (obj[prop] instanceof Object) {
const rtn = this.isEmpty(obj[prop]);
if (rtn === false) {
return false;
}
} else if (obj[prop] || obj[prop] === false) {
return false;
}
}
}
return true;
}
下面的示例显示了如何测试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(未定义));//真的
jQuery在这种情况下具有特殊的函数isEmptyObject():
jQuery.isEmptyObject({}) // true
jQuery.isEmptyObject({ foo: "bar" }) // false
阅读更多信息http://api.jquery.com/jQuery.isEmptyObject/
我的看法:
函数isEmpty(obj){return Object.keys(obj).length==0;}变量a={a: 1中,b: 2个}变量b={}console.log(isEmpty(a));//假的console.log(isEmpty(b));//真的
只是,我认为目前并不是所有浏览器都实现Object.keys()。