Tatsuya Oiwa About Archive Feed Github Twitter

JavaScript (Node.js) で空のオブジェクトを評価する

JavaScriptで条件分岐を書くときのために。

if による判定 (undefined, null, false, 0, '')

if文による判定の場合、undefined, null, false, 0, ''(空文字) はfalseになる。ちなみに-1trueなので注意。

console.log( Object ? true : false);    // true
console.log( undefined ? true : false); // false
console.log( null ? true : false);      // false
console.log( true ? true : false);      // true
console.log( false ? true : false);     // false
console.log( 0 ? true : false);         // false
console.log( 1 ? true : false);         // true
console.log( -1 ? true : false);        // true
console.log( '' ? true : false);        // false
console.log( 'a' ? true : false);       // true
console.log( [] ? true : false);        // true
console.log( {} ? true : false);        // true

配列が空かどうかを判定

if文だと配列が空かどうかは判定できないので、lengthをとる。([].length0

console.log( [].length ? true : false);    // false
console.log( ['a'].length ? true : false); // true

オブジェクト(ハッシュ)が空かどうか判定

オブジェクトにはlengthメソッドが使えないので、Object.keys() で全てのキーから配列を生成した後、配列と同様 length で判定する。

console.log( Object.keys({}).length ? true : false);
console.log( Object.keys({a:'a'}).length ? true : false);