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()の結果を取得し、一方を反復処理するときに他方を相互参照することもできますが、それは適切な方法があると確信しているようなハックです!
最初に オブジェクトリテラルをプロトタイプハッシュに変換する :
// 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);
});
ここにはプロトタイプの必要はありません。JavaScriptには _for..in
_ ループがあります。 _Object.prototype
_をだれもいじっていないことがわからない場合は、hasOwnProperty()
もチェックします。
_for(var prop in obj) {
if(obj.hasOwnProperty(prop))
doSomethingWith(obj[prop]);
}
_