在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:

var a = {};

我该如何检查是否是这种情况?


当前回答

    let jsObject = JSON.parse(JSON.stringify(obj), (key, value) => {
                if (value === null ||
                    value === '' ||
                    (value.constructor === Object && Object.entries(value).length === 0) ||
                    (value.constructor === Array && value.length === 0)) {
                    return undefined
                }
                return value
            })

这将递归地过滤掉所有无效字段。

其他回答

您可以在使用对象原型之前或代码开始时定义自己的对象原型。

定义应如下所示:

Object.prototype.hasOwnProperties=函数(){ for(此处为var k){ 如果(this.hasOwnProperty(k)){ 返回true;} }return false;}

下面是一个用法示例:

变量a={};while(a.status!==“完成”){ if(状态==“正在处理”){a.status=“完成”;}if(状态==“启动”){a.status=“正在处理”;}如果(!a.hasOwnProperties()){a.status=“正在启动”;}}

享受!:-)

这一行代码也有助于回退到较旧的浏览器。

var a = {}; //if empty returns false
(Object.getOwnPropertyNames ? Object.getOwnPropertyNames(a).length !== 0 : (function(){ for(var key in a) break; return !!key })()) //Returns False

var a = {b:2}; //if not empty returns true
(Object.getOwnPropertyNames ? Object.getOwnPropertyNames(a).length !== 0 : (function(){ for(var key in a) break; return !!key })()) //Returns true

Object.getOwnPropertyNames在ECMA-5中实现。上面的行在具有回退功能的旧浏览器中工作。


另一个快速解决方案是检查Object.keys、Object.entries或Object.values

知识文章:关注这篇SO文章,了解Object.keys与Object.getOwnPropertyNames之间的详细区别

对于有相同问题但使用jQuery的人,可以使用jQuery.isEmptyObject。

除了Thevs的回答:

var o = {};
alert($.toJSON(o)=='{}'); // true

var o = {a:1};
alert($.toJSON(o)=='{}'); // false

它是jquery+jquery.json

尝试解构

const a = {};
const { b } = a;
const emptryOrNot = (b) ? 'not Empty' : 'empty';
console.log(emptryOrNot)