SYNCERのロゴ
アイキャッチ画像

オブジェクトが空か確認する方法

JavaScriptで、オブジェクトの内容が空か否かを確認するには、for...in文を利用しましょう。

サンプルコード

単純な判別

単純に中身がある({a:1})か、ない({})かを見分ける場合です。isObjectEmpty()の返り値は、空の場合はtrue、空じゃない場合はfalseになります。

function isObjectEmpty ( object ) {
	for( var key in object ) {
		return false ;
	}

	return true ;
}

isObjectEmpty( {} ) ;	// true
isObjectEmpty( {a:1} ) ;	// false

継承されたプロパティを除外

インスタンスで作成したオブジェクトを取り扱う際、継承されたプロパティを判定から除外したい場合は、hasOwnProperty()でそのプロパティがインスタンス独自のものかを確認しましょう。

function isObjectEmpty ( object ) {
	for( var key in object ) {
		if ( object.hasOwnProperty( key ) ) return false ;
	}

	return true ;
}

var a = {} ;
isObjectEmpty( a ) ;	// true

// コンストラクタ
function SYNCER () {} ;
SYNCER.prototype.hoge = 1 ;

// インスタンス (独自のプロパティなし)
var b = new SYNCER () ;
isObjectEmpty( b ) ;	// true

// インスタンス (独自のプロパティあり)
var c = new SYNCER () ;
c.fuga = 1 ;
isObjectEmpty( c ) ;	// false

デモ

オブジェクトが空か否かを判定するデモです。このデモでは継承されたプロパティを無視する仕様にしています。

function isObjectEmpty ( object ) {
	for( var key in object ) {
		if ( object.hasOwnProperty( key ) ) return false ;
	}

	return true ;
}

var a = {} ;
var aaa = isObjectEmpty( a ) ;

function SYNCER () {} ;
SYNCER.prototype.hoge = 1 ;

var b = new SYNCER () ;
var bbb = isObjectEmpty( b ) ;

var c = new SYNCER () ;
c.fuga = 1 ;
var ccc = isObjectEmpty( c ) ;
aaa =
bbb =
ccc =
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年9月13日 (水)
コンテンツを公開しました。