2013-05-14 48 views
1

我有一些基于标记的语法可以在Railo中工作。ColdFusion - cfscript中的收集循环

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

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

我想要做的CFSCRIPT一样的,所以我用:

for (i in myArray) {} 

然而,“我”给我的项目 ...我怎样才能访问指数价值?

作为工作的时候,我不得不手动计数的指标,像这样:

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

但这种感觉很脏。 cfscript的for语法是否可以作为cfloop集合的真正替代方案?

我试过谷歌搜索这一切,但从来没有得到任何体面的结果。有没有办法重写我的循环,以便我也可以访问索引?

谢谢, Mikey。

回答

1

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

然而,在Railo,有这个(相当可怕的标签/脚本语法混合):

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

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

+0

这真是太遗憾了!我希望在这种语法中会有一种优雅的方式,但我的猜测似乎是正确的。感谢你的回答。 – 2013-05-14 15:21:58

+0

NP。顺便说一下,你使用的CFLOOP语法是* Railo only *。它在CF中不*有效。你可能想更新你的文字。 – 2013-05-14 15:23:58

+0

有谎言我的问题。我认为Railo使用标签实现(一种相当不错的方式),但是觉得需要在脚本版本中遵守ACF。坏消息!我也编辑我的帖子来纠正我的错误陈述。 – 2013-05-14 15:32:00

1

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

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

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

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

注意:我写了Underscore.cfc

+0

这太酷了!谢谢。 – 2013-05-17 11:56:20