Hashが空か判定したい
JavaScriptのオブジェクトはHashのように使えますが、素のままだと空かどうかを判定するのも一苦労なんだよなー。一行で書くとちょい長いので、関数が必要な感じ。
/** * ハッシュが空かどうか判定する。 */ function isEmpty(hash) { for ( var i in hash ) return false; return true; } ... out.innerHTML += '{} : ' + isEmpty({}) + "<br/>"; out.innerHTML += '{a:"aa"} : ' + isEmpty({a:"aa"}) + "<br/>";
うーん、やはりここはprototype.jsのHashを使うべきか・・・。これを使うと以下のように多少さくっと書けます。
// prototype.jsのHashを使えば多少楽には書ける。 out.innerHTML += '$H({}).size() == 0 : ' + ($H({}).size() == 0) + "<br/>"; out.innerHTML += '$H({a:"aa"}).size() == 0 : ' + ($H({a:"aa"}).size() == 0) + "<br/>"
なお、性能的には要素を全て列挙しないという点で前者の方が早いはずなので、大量のエントリを含む可能性があるHashを評価する場合はご注意。