Javascriptでオブジェクトが空かどうか判定する

ES2017以降

Object.entries(obj).length === 0 && obj.constructor === Object

Object.entriesが使用できるブラウザならこれでOKです。
Internet Explorerでは使えませんが、、、

ES2015以降

Object.keys(obj).length === 0 && obj.constructor === Object

今どきのブラウザなら全部Object.keysは使えるので、普通はこれを使えば良いと思います。

obj.constructor === Object 

は new Date() などは、Object.keys(obj).length === 0になってしまうのでそれに対応するためですね。

ES2015以前

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return JSON.stringify(obj) === JSON.stringify({});
}

objのpropを順に読み出してプロパティかどうかをチェックしているという関数です。

lodashを使う

_.isEmpty({});

lodashを使うなら、これが簡潔でいいですよね〜

jQueryを使う

jQuery.isEmptyObject({});

コメント