web-dev-qa-db-ja.com

Prototypeを使用してjavascriptのオブジェクトのすべてのプロパティを繰り返しますか?

Prototype JavaScriptフレームワークを使用してオブジェクトのすべてのプロパティを反復処理する方法はありますか?

状況は次のとおりです。JSONでAJAXの応答を取得しています。これは次のようになります。

_{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}
_

変数responseへのjson応答を評価する場合、_response.barobj_オブジェクトの各プロパティを反復処理して、どのインデックスがtrueで、どのインデックスがfalseであるかを確認できます。

プロトタイプにはObject.keys()Object.values()の両方がありますが、奇妙なことに単純なObject.each()関数がないようです! Object.keys()とObject.values()の結果を取得し、一方を反復処理するときに他方を相互参照することもできますが、それは適切な方法があると確信しているようなハックです!

89
OverloadUT

最初に オブジェクトリテラルをプロトタイプハッシュに変換する

// Store your object literal
var obj = {foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}

// Iterate like so.  The $H() construct creates a prototype-extended Hash.
$H(obj).each(function(pair){
  alert(pair.key);
  alert(pair.value);
});
42
Triptych

ここにはプロトタイプの必要はありません。JavaScriptには _for..in_ ループがあります。 _Object.prototype_をだれもいじっていないことがわからない場合は、hasOwnProperty()もチェックします。

_for(var prop in obj) {
    if(obj.hasOwnProperty(prop))
        doSomethingWith(obj[prop]);
}
_
552
Christoph

キーを反復処理し、角括弧を使用して値を取得する必要があります。

参照: javascriptオブジェクトのプロパティを列挙するにはどうすればよいですか?

EDIT:明らかに、これは質問を重複させます。

0
Can Berk Güder