web-dev-qa-db-ja.com

Javascriptで空の辞書を一致させる方法は?

ノードからREPL thing、

> d = {}
{}
> d === {}
false
> d == {}
false

空の辞書がある場合、それが空の辞書であることを確認するにはどうすればよいですか?

51
function isEmpty(obj) {
  return Object.keys(obj).length === 0;
}
73
Raynos

このisEmptyメソッドでObject.prototypeを拡張して、オブジェクトに独自のプロパティがないかどうかを確認できます。

Object.prototype.isEmpty = function() {
    for (var prop in this) if (this.hasOwnProperty(prop)) return false;
    return true;
};
19
Gumbo

JQueryを使用してはどうですか?

$.isEmptyObject(d)
13
stroz

forループには属性がないため、繰り返し処理するものはありません。当然のことながらクレジットを与えるために、私はこの提案を見つけました ここ

function isEmpty(ob){
   for(var i in ob){ return false;}
  return true;
}

isEmpty({a:1}) // false
isEmpty({}) // true
10
David Ruttka

これが 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
9
cevaris

JavaScriptの学者とはほど遠いですが、次のようなことはできますか?

if (Object.getOwnPropertyNames(d).length == 0) {
   // object is empty
}

1行の純粋な関数呼び出しであるという利点があります。

4
Steve Bennett
var SomeDictionary = {};
if(jQuery.isEmptyObject(SomeDictionary))
// Write some code for dictionary is empty condition
else
// Write some code for dictionary not empty condition

これは正常に動作します。

1

次のように「オブジェクト」タイプであることを確認する必要があります。

(typeof(d) === 'object')

そして、短い「サイズ」関数を実装して、空であることを確認します ここで述べたように

1
chrisf

パフォーマンスを考慮しない場合、これは覚えやすいシンプルな方法です。

JSON.stringify(obj) === '{}'

ただし、ループ内で大きなオブジェクトを文字列化するのは望ましくありません。

1
Steve Bennett

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;
        }
    }
);
0
arbyter