使用Prototype在JavaScript中遍历对象的每个属性?
有没有办法使用Prototype JavaScript框架来遍历对象的每个属性?
这是情况:我得到一个JSON的AJAX响应,看起来像这样:
{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}
如果我将json响应评估为variablesresponse
,我希望能够遍历response.barobj
对象中的每个属性,以查看哪些索引是真的,哪些是假的。
Prototype有Object.keys()
和Object.values()
但奇怪的是没有一个简单的Object.each()
函数! 我可以把Object.keys()和Object.values()的结果交叉引用,但是这是一种破解,我确信有一个正确的方法来做到这一点!
你必须首先将你的对象文字转换成一个Prototype Hash :
// 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); });
这里不需要Prototype:JavaScript有for..in
循环。 如果你不确定没有人与Object.prototype
,请检查hasOwnProperty()
以及
for(var prop in obj) { if(obj.hasOwnProperty(prop)) doSomethingWith(obj[prop]); }
您应该迭代键并使用方括号来获取值。
请参阅: 如何枚举JavaScript对象的属性?
编辑:显然,这使得问题重复。