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({});
コメント