当前位置:  开发笔记 > 编程语言 > 正文

使用Prototype在javascript中迭代对象的每个属性?

如何解决《使用Prototype在javascript中迭代对象的每个属性?》经验,为你挑选了2个好方法。

有没有办法使用Prototype JavaScript框架迭代对象的每个属性?

情况就是这样:我在JSON中得到一个AJAX响应,如下所示:

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

如果我将json响应评估为变量response,我希望能够遍历response.barobj对象中的每个属性,以查看哪些索引为true,哪些为false.

原型有两种Object.keys(),Object.values()但奇怪似乎没有一个简单的Object.each()功能!当我迭代一个时,我可以获取Object.keys()和Object.values()的结果并交叉引用另一个,但这是一个黑客,我相信有一个正确的方法来做到这一点!



1> Christoph..:

这里没有Prototype:JavaScript有for..in循环.如果您不确定没有人搞砸了Object.prototype,请检查hasOwnProperty(),即

for(var prop in obj) {
    if(obj.hasOwnProperty(prop))
        doSomethingWith(obj[prop]);
}


感谢您的实际答案,而不是强迫我们加载不需要的库.
不幸的是,如果你谷歌像"如何迭代每个对象属性javascript"这样的话,这个问题就会出现#1,所以很多人来这里确实可能正在寻找这个问题的答案.他们想要的问题是:http://stackoverflow.com/questions/921789/how-to-loop-through-javascript-object-literal-with-objects-as-members,这与对象无关文字.
+1这是问题标题的正确答案.
这不是严格的答案.问题说明必须使用原型!选择自由 - 哈哈......

2> Triptych..:

您必须先将对象文字转换为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对象,我现在必须将这个答案视为与由于"重复"而关闭的问题相同.所以,可怕的例子是因为它迫使用户加载Prototype.用户没有对Prototype说什么,所以强迫他们加载不需要的库是没用的.(记住,将其视为真的重复).如果由于错误的重复索赔而没有关闭另一个问题,我就不必投票给答案了.
提问者没有提到他们想要Prototype(或者是编辑过的问题吗?)?无论如何,这一切都很好
推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有