ColdFusion - cfscript中的集合循环

问题描述 投票:1回答:3

我有一些基于标签的语法在Railo中有效。

<cfloop collection="#myArray#" item="j" index="i"></cfloop>

以上允许我访问索引'i'和项目本身'j'。

我想在cfscript中做同样的事情,所以我用过:

for ( i in myArray) {}

但是,“我”给了我项目......如何访问索引值?

作为解决方法,我不得不手动计算索引,如下所示:

j = 1;
for ( i in myArray) {
j++;
}

但这感觉很脏。 cfscript语法中的for是否允许cfloop集合的真正替代?

我试过谷歌搜索所有这些,但从来没有得到任何体面的结果。有没有办法重写我的for循环,以允许我访问索引?

谢谢,Mikey。

coldfusion railo cfml
3个回答
1
投票

在ColdFusion中,我担心,除了你正在使用的解决方法,或者只是使用索引for循环,这是不可能的。

然而在Railo中,有这种(相当糟糕的标签/脚本混合语法):

<cfscript>
    loop array=[5,4,3,2,1] index="i" item="v"  {
        writeOutput("[#i#][#v#]<br>");
    }   
</cfscript>

所以基本上它是没有尖括号的<cfloop>


1
投票

在CF 10和Railo 4中,您可以使用Underscore.cfc library

_ = new Underscore();// instantiate the library

_.each(myArray, function(item, index) {
   // code here
});

虽然我个人而言,我宁愿使用其他功能方法之一,例如mapreduce,这取决于你想要做什么。

注意:我写了Underscore.cfc


1
投票

您可以使用:

<cfscript>
    for (key in struct) {
        writeOutput("#key# = #struct[key]# <br>");
    }
</cfscript>

要么

<cfoutput>
    <cfloop collection="#params#" item="key" >
        #key# = #params[key]#         
    </cfloop>
</cfoutput>

请记住在Applicacion.cfc中设置“this.serialization.preservecaseforstructkey = true”

© www.soinside.com 2019 - 2024. All rights reserved.