有没有办法使用Prototype JavaScript框架迭代对象的每个属性?
情况就是这样:我在JSON中获得了一个类似于这样的AJAX响应:
{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}
如果我将json响应评估为变量response
,我希望能够遍历response.barobj
对象中的每个属性,以查看哪些索引为true,哪些索引为false。
Prototype同时具有Object.keys()
和Object.values()
,但奇怪的是似乎没有简单的Object.each()
函数!当我迭代一个时,我可以获取Object.keys()和Object.values()的结果并交叉引用另一个,但这是一个黑客,我相信有一个正确的方法来做到这一点!
答案 0 :(得分:550)
这里不需要Prototype:JavaScript有for..in
个循环。如果您不确定没有人与Object.prototype
混淆,请同时检查hasOwnProperty()
,即
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
doSomethingWith(obj[prop]);
}
答案 1 :(得分:42)
您必须先convert your object literal to a 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);
});
答案 2 :(得分:0)