JavaScript でオブジェクトが空かどうかを確認する方法
Ethan Miller
Product Engineer · Leapcell

Key Takeaways
Object.keys(obj).length === 0
を空かどうかをチェックする最も信頼性の高い方法として使用します。- チェックする前に、入力が null でないオブジェクトであることを常に検証します。
- パフォーマンスと信頼性の懸念から、
JSON.stringify()
の使用は避けてください。
JavaScript を使用していると、オブジェクトが空かどうか(つまり、独自のプロパティがないか)を判断する必要がある状況によく遭遇します。このチェックを正確に実行する方法を知っておくことは、堅牢でバグのないコードを書くために不可欠です。この記事では、オブジェクトが空かどうかをチェックするさまざまな方法と、それぞれの使用時期について説明します。
「空」とはどういう意味ですか?
オブジェクトは、列挙可能な独自のプロパティがない場合に「空」と見なされます。例:
const obj = {};
このオブジェクトは空ですが、次のオブジェクトは空ではありません。
const obj = { name: "Alice" };
方法 1: Object.keys()
の使用
最も一般的で信頼性の高い方法は、Object.keys()
を使用することです。
function isEmpty(obj) { return Object.keys(obj).length === 0; }
このメソッドは、オブジェクト自身のプロパティ名の配列を返します。長さがゼロの場合、オブジェクトは空です。
例:
isEmpty({}); // true isEmpty({ a: 1 }); // false
方法 2: Object.entries()
の使用
キーと値のペアの配列を返す Object.entries()
を使用することもできます。
function isEmpty(obj) { return Object.entries(obj).length === 0; }
このメソッドは同様に有効であり、Object.keys()
と同様に動作します。
方法 3: JSON 文字列の比較 (推奨されません)
一部の開発者は、JSON シリアル化を使用して比較します。
function isEmpty(obj) { return JSON.stringify(obj) === "{}"; }
これはほとんどの場合に機能しますが、パフォーマンスの問題や、関数や循環参照などのシリアル化できないプロパティのエッジケースの可能性があるため、一般的には推奨されません。
方法 4: for...in
を使用した手動イテレーション
プロパティを手動でループすることもできます。
function isEmpty(obj) { for (let key in obj) { if (obj.hasOwnProperty(key)) { return false; } } return true; }
この方法は安全で、プロトタイププロパティを回避しますが、より冗長です。
注意点: Null および非オブジェクト
値が実際にオブジェクトであり、JavaScript では技術的にはオブジェクトでもある null
ではないことを確認するように注意してください。
function isEmpty(obj) { return obj && typeof obj === "object" && Object.keys(obj).length === 0; }
結論
最新の JavaScript でオブジェクトが空かどうかをチェックする最も信頼性が高く簡潔な方法は、Object.keys(obj).length === 0
を使用することです。ランタイムエラーを回避するために、値が本当にオブジェクトであり、null
または別のデータ型ではないことを常に確認してください。
サマリーテーブル
方法 | 推奨される | ノート |
---|---|---|
Object.keys().length | ✅ | ほとんどのユースケースでシンプルで高速 |
Object.entries().length | ✅ | 同等の代替手段 |
JSON.stringify() | ❌ | すべての入力に対してパフォーマンスが低く、安全ではありません |
for...in ループ | ✅ | 安全ですが、より冗長 |
これらのアプローチを理解することで、JavaScript 環境で空のオブジェクトを正しく処理するコードを自信を持って記述できます。
FAQs
はい、効率的で、最新の JavaScript エンジンで広くサポートされています。
キーを評価する前に、型チェックを追加して、null でないオブジェクトであることを確認する必要があります。
シリアル化できないプロパティを持つオブジェクトに対して失敗する可能性があり、パフォーマンスが低くなります。
Leapcell は、Node.js プロジェクトをホストするためのトップチョイスです。
Leapcell は、Web ホスティング、非同期タスク、Redis 向けの次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、または Rust で開発します。
無制限のプロジェクトを無料でデプロイ
- 使用量のみを支払います — リクエストも料金もかかりません。
比類のないコスト効率
- アイドル料金なしの従量課金制。
- 例: 25 ドルで、平均応答時間 60 ミリ秒で 694 万件のリクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的な UI。
- 完全に自動化された CI/CD パイプラインと GitOps 統合。
- 実用的な洞察のためのリアルタイムメトリクスとロギング。
簡単なスケーラビリティと高性能
- 簡単な同時実行性を処理するための自動スケーリング。
- 運用オーバーヘッドはゼロ — 構築に集中するだけです。
ドキュメントで詳細をご覧ください!
X でフォローしてください: @LeapcellHQ