前端判断对象为空

一.使用JSON.stringify()方法:

JSON.stringify() 是将一个JavaScript对象或值转换为JSON格式字符串,如果最终只得到一个{},就说明他是一个空对象
let obj1 = {};
console.log(JSON.stringify(obj1) === "{}");  //true 表示为空对象

let obj2 = { age:18 };
console.log(JSON.stringify(obj2) === "{}");  //false 表示不为空对象

二.for in 循环判断

使用for…in循环遍历对象属性,并使用obj.hasOwnProperty()检查属性是否属于对象本身,如果存在任何属性,则返回false,否则返回true。
//封装判断函数
function isEmptyObject(obj) {
    for (let key in obj) {
        if (obj.hasOwnProperty(key))
            return false;
    }
    return true;
}

const obj1 = {};
//调用
console.log(isEmptyObject(obj1)); // true 表示为空对象

const obj2 = {age: 18 };
//调用 
console.log(isEmptyObject(obj2)); // false  表示不为空对象

三.Object.getOwnPropertyNames()方法 

此方法是使用Object对象的getOwnPropertyNames()方法,获取到对象中的属性名,存到一个数组中,返回数组对象,我们可以通过判断数组的length来判断此对象是否为空

注意:此方法不兼容ie8

const obj1 = {};
console.log(Object.getOwnPropertyNames(obj1).length === 0); // true  //空对象

const obj2 = { age: '18' };
console.log(Object.getOwnPropertyNames(obj2).length === 0); // false //不为空对象

四.使用ES6的Object.keys()方法

主要是获取对象的键名,将对象的属性转换成数组,通过是否存在键名(数组的长度是否为0)而判断是否为空
let obj1 = {};
console.log(Object.keys(obj1).length == 0);//true  空对象

let obj2 = { age:18 };
console.log(Object.keys(obj2).length == 0);//false  不为空对象

你可能感兴趣的:(前端)