JavaScript判断空对象的5+1种方式

18,142 阅读2分钟

众所周知,在开始的开始,那肯定要罗嗦两句.工作之后你就会发现后端返回的数据,其实不是完全符合前端需求的.这个时候呢,我们就需要把一些数据做处理.

今天带来五种判断空对象的方法.

1:

好的,首先向我们走来的是JSON.stringify(data) === '{}'它可以通过将对象转为字符串来判断是否为空.为空,则为true,否则就是false

    let data = {};
    let data1 = {
        name: "大帅哥",
        age: "18"
    }
   console.log(JSON.stringify(data) === '{}') // true
   console.log(JSON.stringify(data1) === '{}') // false

2:

接下来出场的是我们的二号选手Object.keys(data).length.它是通过判断对象自身有没有key 值来判断是否为空的

    let data = {};
    let data1 = {
        name: "大帅哥",
        age: "18"
    }
   console.log(Object.keys(data).length)// 0
   console.log(Object.keys(data).length===='{}')// true
   console.log(Object.keys(data1).length===='{}')// false

3:

紧随在二号后面的是我们的三号,哦!天哪,它和二号如此的相似.难道他们是兄弟嘛??不可思议!他们真的是兄弟.看看我们的三号兄弟,哦天哪,它是通过判断对象是否有value值来判断是否为空对象的.Object.values(data).length!让我们为这对兄弟送上掌声.

    let data = {};
    let data1 = {
        name: "大帅哥",
        age: "18"
    }
    console.log(Object.value(data).length)// 0
    console.log(Object.value(data).length===='{}')// true
    console.log(Object.value(data1).length===='{}')// false

4:

好的,让我们看向第四位参赛者.天哪,它是for..in.众所周知,这位很忙,它的工作很多.那让我们看看这位大佬,能不能带给我们惊喜.

    let data = {};
    let data1 = {
        name: "大帅哥",
        age: "18"
    }
    let _fn = (obj) => {
        for (let key in obj) {
            return false;
        }
        return true
    }
    console.log(_fn(data)) //true

    console.log(_fn(data1)) //false

5:

五号参赛者,他是谁呢??,{}.hasOwnProperty.call(obj,key),他会给我们带来什么样的惊喜呢?

    let data = {};
    let data1 = {
        name: "大帅哥",
        age: "18"
    }
    let _fn = (obj) => {
        for (let _key in obj) {
            if (obj.hasOwnProperty(_key)) {
                return false
            }
        }
        return true
    }
    console.log(_fn(data)) //true
    console.log(_fn(data1)) //false

不得不说,五号和二号还又四号有点像啊

6:

那么接下来就是我们的六号选手,他是谁呢??它是Object.getOwnPropertyNames(),它和Object.keys(obj)的功能是一样的,我们一般也是用来获取一个JSON对象中所有属性名

    let data = {};
    let data1 = {
        name: "大帅哥",
        age: "18"
    }

    let _n = Object.getOwnPropertyNames(data)
    let _f = Object.getOwnPropertyNames(data1)

    console.log(_n) // []
    console.log(Object.getOwnPropertyNames(data).length)//0
    console.log(_f) // ["name"]