js中判断对象是否为空的方法

方法一

JSON.stringify(arr) === '[]'
arr.length === 0
+arr === 0

上面三种判断数组为空的方法虽然大多数情况下都可以用,但依然存在bug,比如令 arr[-1] = '' 时,数组不为空,但三者都返回true,所以如果业务代码中一旦遇到这种bug,就需要来个函数了:

var arr = []
arr[-1] = ''
function isEmptyObject(e) {
    var t;
    for (t in e)
        return false;
    return true;
}
isEmptyObject(arr);

方法二

ES6新增的方法 Object.keys() ,该方法会返回一个由一个给定对象的自身可枚举属性组成的数组。

如果我们的对象为空,他会返回一个空数组,如下:

var a = {}
Object.keys(a) // []

我们可以依靠这个方法通过判断它的长度来知道它是否为空。

if (Object.keys(object).length === 0) {
    return false // 如果为空,返回false
}
return true // 如果不为空,则会执行到这一步,返回true

方法三

使用 lodash

安装:

# npm
npm i --save lodash
# yarn
yarn add lodash

引入:

window._ = require('lodash');

判断:

_.isEmpty({});  // true

官网:https://lodash.com/