如何在 Dojo 中迭代对象(关联数组)?

Posted

技术标签:

【中文标题】如何在 Dojo 中迭代对象(关联数组)?【英文标题】:How can you iterate over an object (associative array) in Dojo? 【发布时间】:2011-10-06 15:21:45 【问题描述】:

Dojo 是否有类似于 jQuery 的 each() 的方法允许您传递对象以进行迭代? jQuery.each() 允许您传递数组或对象。在后一种情况下,回调函数同时接收键和值。有什么东西可以让你在 Dojo 中做到这一点吗?

【问题讨论】:

【参考方案1】:

看起来您正在寻找dojox.lang.functional.object.forIn

dojo参考中没有实际的文档页面,只有文章Functional fun in javascript with Dojo中的一个小例子:

模块 dojox.lang.functional.object 定义了重要的对象助手:

df.forIn(object, callback[, thisObject])

如果您反对使用该模块,您也可以轻松制作自己的变体:

function objEach(obj, f, scope)
    for(var key in obj)
        if(obj.hasOwnProperty(key))
            f.call(scope, obj[key], key);
        
    

对于数组,基础库中已经有 dojo.forEach()。

【讨论】:

嘿,是你!感谢您将我指向 dojo irc 频道。我想这就是我要找的。为什么它在dojox中隐藏得如此之深?真的应该成为核心的一部分,你不觉得吗? 该模块具有一些额外的功能,因此您可以使用字符串而不是函数等。基础 forEach 和 custm-function(我使用的)只接收普通函数。 这有点旧,但我正在回答@Sam007 问题以供将来参考,forIn 不检查hasOwnProperty(key),而是检查!(key in empty) 其中empty = (github.com/dojo/dojox/blob/1.9/lang/functional/object.js#L56) 哪个它不(总是)相同,并且取决于您的对象,它可能会或可能不会做您想要的。 谢谢@gonz。我确实意识到forIn 不支持hasOwnProperty,但不知道为什么。这有帮助 @WebDevie:链接已损坏。我检查了一下,该功能在 1.9 中仍然在同一个地方(dojox/lang/functional),但他们显然改变了他们处理永久链接的方式,所以我不知道如何修复它。如果有人能为我做到这一点,我将不胜感激。

以上是关于如何在 Dojo 中迭代对象(关联数组)?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 索引关联对象数组增删改查循环

如何从 JavaScript 关联数组中删除对象?

如何从关联数组中只打印一次部门名称

在 PHP 中创建关联数组的数组

关联数组与多维数组,VBA

如何在 JavaScript 文字符号中创建关联数组