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