我有一些基于标签的语法适用于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。
答案 0 :(得分:1)
在ColdFusion 中不可能,我担心,除了你正在使用的解决方法,或者只是使用索引for循环。
然而在Railo中,有这种(相当糟糕的标签/脚本混合语法):
<cfscript>
loop array=[5,4,3,2,1] index="i" item="v" {
writeOutput("[#i#][#v#]<br>");
}
</cfscript>
所以基本上它是没有尖括号的<cfloop>
。
答案 1 :(得分:1)
在CF 10和Railo 4中,您可以使用Underscore.cfc library。
_ = new Underscore();// instantiate the library
_.each(myArray, function(item, index) {
// code here
});
虽然就个人而言,我宁愿使用其他功能方法之一,例如map
或reduce
,具体取决于您要做的事情。
注意:我写了Underscore.cfc
答案 2 :(得分: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”