【JS/TS】オブジェクトが空なのか判定する方法

投稿日:2024/10/26 最終更新日:2024/10/26

【JS/TS】オブジェクトが空なのか判定する方法

配列が空であるか確認するときは、

if(array.length > 0)

これで分岐させる事ができます。

ではオブジェクトの場合はどうなのか?

書き方

結論、このように書きます。

if(Object.keys(obj).length > 0)

Object.keys(obj)メソッド

Object.keys(obj) は指定されたオブジェクト(objの部分)の列挙可能なプロパティ名を配列として返すJSメソッドです。

下記のように、オブジェクト内の「キー」に当たる部分を全て取得して配列として返してくれます。

const dog = {
  // キー: 値
  name: "taro",
  age: 5,
  type: "Shiba Inu",
};

console.log(Object.keys(dog)); // 出力: ["name", "age", "type"]

lengthプロパティを追加

つまり、Object.keys(obj).lengthで考えると、Object.keys(dog)では空ではない["name", "age", "type"]の配列を取得できていたので、lengthプロパティにより配列の要素数は3を返されるため、結果はtrueとなります。

const dog = {
  // キー: 値
  name: "taro",
  age: 5,
  type: "Shiba Inu",
};

console.log(Object.keys(dog).length); // 出力: true

よって、上記のパターンでifの分岐を下記のように書いてあげることでオブジェクトが空の場合の処理を書く事ができます。

const dog = {
  // キー: 値
  name: "taro",
  age: 5,
  type: "Shiba Inu",
};

if(Object.keys(dog).length > 0) {
  console.log("空ではないよ!")
} else {
  console.log("空だよ!");
};
// 出力: "空ではないよ!"

どんな場面で使うか?

例えば、APIでデータ取得をするときに活用できます。

REST APIでは基本的にJSON形式でデータを取得しますが、JSONはオブジェクト型になります。

そのため、送られてきたデータが空であればエラーを出させたり、表示領域そのものを非表示にする際の処理の分岐で活用する事ができます。