JS中如何判断一个对象是否为空对象

方法一 Object.keys()

通过ES6新增的一个Object.keys()方法

该方法会返回一个由给定对象自身的(不含继承的)可枚举(enumerable )属性组成的数组,数组中属性名的排列顺序和使用 for...in.. 循环遍历该对象时返回的顺序一致 。即可以通过返回数组的长度来判断是否为空对象,若为空对象,该数组长度为0。

  • 不包括继承的
  • 不包括不可枚举的
  • 不包括 Symbol 值作为名称的属性

例:

const judgeObj = (obj) => {
    if (Object.keys(obj).length == 0) {
        return true;
    } else {
        return false;
    }
}

方法二 JSON.stringify

JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。

通过JSON.stringify转换后 和 '{}'比对

const judgeObj = (obj) => {
    return JSON.stringify(obj) === '{}'
}

方法三 for...in

for...in 语句以任意顺序迭代一个对象的除Symbol以外的可枚举属性,包括继承的可枚举属性。

  • 包括继承的
  • 不包括不可枚举的
  • 不包括Symbol

例:

const judgeObj = (obj) => {
    for (let key in obj) {
        return false
    }
    return true
}

当对象中key值不存在的话,得到的key为undefined,则return true,那么就是空对象。

附:

Object.keys()用法

Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 for-in 循环还会枚举其原型链上的属性)。

var obj={
  p1:123,
  p2:456
}
console.log(Object.keys(obj));  //["p1","p2"]
posted @ 2020-08-31 09:53  ZerlinM  阅读(2144)  评论(0编辑  收藏  举报