ノードからREPL thing、
> d = {}
{}
> d === {}
false
> d == {}
false
空の辞書がある場合、それが空の辞書であることを確認するにはどうすればよいですか?
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
このisEmpty
メソッドでObject.prototype
を拡張して、オブジェクトに独自のプロパティがないかどうかを確認できます。
Object.prototype.isEmpty = function() {
for (var prop in this) if (this.hasOwnProperty(prop)) return false;
return true;
};
JQueryを使用してはどうですか?
$.isEmptyObject(d)
for
ループには属性がないため、繰り返し処理するものはありません。当然のことながらクレジットを与えるために、私はこの提案を見つけました ここ 。
function isEmpty(ob){
for(var i in ob){ return false;}
return true;
}
isEmpty({a:1}) // false
isEmpty({}) // true
これが jQuery が使用するもので、うまく機能します。ただし、jQueryスクリプトで isEmptyObject を使用する必要がありますが。
isEmptyObject: function( obj ) {
for ( var name in obj ) {
return false;
}
return true;
}
//Example
var temp = {};
$.isEmptyObject(temp); // returns True
temp ['a'] = 'some data';
$.isEmptyObject(temp); // returns False
JQueryを含めることがオプションではない場合、単純なJavaScript関数を個別に作成します。
function isEmptyObject( obj ) {
for ( var name in obj ) {
return false;
}
return true;
}
//Example
var temp = {};
isEmptyObject(temp); // returns True
temp ['b'] = 'some data';
isEmptyObject(temp); // returns False
JavaScriptの学者とはほど遠いですが、次のようなことはできますか?
if (Object.getOwnPropertyNames(d).length == 0) {
// object is empty
}
1行の純粋な関数呼び出しであるという利点があります。
var SomeDictionary = {};
if(jQuery.isEmptyObject(SomeDictionary))
// Write some code for dictionary is empty condition
else
// Write some code for dictionary not empty condition
これは正常に動作します。
次のように「オブジェクト」タイプであることを確認する必要があります。
(typeof(d) === 'object')
そして、短い「サイズ」関数を実装して、空であることを確認します ここで述べたように 。
パフォーマンスを考慮しない場合、これは覚えやすいシンプルな方法です。
JSON.stringify(obj) === '{}'
ただし、ループ内で大きなオブジェクトを文字列化するのは望ましくありません。
Node.jsでこれを試す場合は、このコードに基づいてこのスニペットを使用してください here
Object.defineProperty(Object.prototype, "isEmpty", {
enumerable: false,
value: function() {
for (var prop in this) if (this.hasOwnProperty(prop)) return false;
return true;
}
}
);