ColdFusion:是否有可能从cfscript获取索引for循环?

时间:2017-10-24 21:19:23

标签: coldfusion cfml

所以我使用for in循环遍历一个结构数组

for(item in array) {
    processStruct(item)
}

非常简单,我要做的是获取for in循环中的当前索引并将其传递给函数:processStruct(item, index)。我知道我可以使用常规for循环执行此操作,也可以使用标记版本<cfloop>

<cfloop array="#myArray#" index="i">
    #i#
<cfloop>

4 个答案:

答案 0 :(得分:2)

不,你在for ... in循环中没有索引。只需设置自己的索引:

var idx = 1;
for( item in struct ){
    processStruct( item, idx );
    idx++;
}

答案 1 :(得分:2)

标签变体<cfloop>提供以ColdFusion 2016(或Railo / Lucee)开头的项目和索引。

<cfset x = [ "a", "b", "c" ]>
<cfloop array="#x#" index="idx" item="it">
    <cfoutput>#idx#:#it#</cfoutput>
</cfloop>
<!--- returns 1:a 2:b 3:c --->

2016年之前的所有ColdFusion版本都没有,因此您必须自己完成:

<cfset x = [ "a", "b", "c" ]>
<cfset idx = 1>
<cfloop array="#x#" index="it">
    <cfoutput>#idx#:#it#</cfoutput>
    <cfset idx++>
</cfloop>
<!--- returns 1:a 2:b 3:c --->

脚本变体不支持它,很可能永远不会支持它。 Java's Iterator interface也没有提供。

答案 2 :(得分:1)

从CF11开始,您可以使用成员函数。这样你就可以访问元素和索引:

myArray = ["a", "b", "c"];
// By arrayEach() member function CF11+
myArray.each(function(element, index) {
    writeOuput(element & " : " & index);
});

答案 3 :(得分:0)

试试这个(我的数组索引):

var arr =JSON.parse("[[[-74.026675, 40.683935],[-74.026675, 40.877483],[-73.910408, 40.877483],[-73.910408, 40.683935]]]");