JavaScript で空オブジェクトを判定する方法


Object.keys() を使う

  • Object.keys() はオブジェクトが持つプロパティを配列として取り出すメソッド
  • 空オブジェクトであれば空配列になるので length が 0 であるかで判定できる

    const obj = {};
    
    if (Object.keys(obj).length === 0) {
    console.log(obj)
    }
    

Object.keys() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

Object.entries()

  • Object.entries() はオブジェクトが持つ列挙可能なプロパティの kay, value を配列として取り出す
  • これも length が 0 かで空オブジェクトか判定できる

    const obj = {};
    
    if (Object.entries(obj).length === 0) {
    console.log(obj);
    }
    

Object.entries() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

注意点

Object.keys(), Object.entries() どちらの方法も、オブジェクトが列挙できないプロパティを持っている場合でも空オブジェクトと判定される

const myObj = Object.create(
  {},
  {
    getFoo: {
      value() {
        return this.foo;
      },
    },
  },
);

console.log(Object.keys(myObj).length); // 0
console.log(Object.entries(myObj).length); // 0