所以我正在使用for-in循环遍历一个结构体数组
for(item in array) {
processStruct(item)
}
很简单,我想做的是获取for in循环的当前索引,并将其同时传递到函数
processStruct(item, index)
中: 。 我知道我可以使用常规for循环来执行此操作,并且使用标记版本<cfloop>
也是可能的。
<cfloop array="#myArray#" index="i">
#i#
<cfloop>
所以我正在使用for-in循环遍历一个结构体数组
for(item in array) {
processStruct(item)
}
processStruct(item, index)
中: 。 我知道我可以使用常规for循环来执行此操作,并且使用标记版本<cfloop>
也是可能的。
<cfloop array="#myArray#" index="i">
#i#
<cfloop>
<cfloop>
提供了item和index,从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 --->
所有 ColdFusion 版本在 2016 年之前都不支持,因此您必须自己完成:
<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 --->
不,你在 for ... in 循环中没有索引。只需设置自己的索引:
var idx = 1;
for( item in struct ){
processStruct( item, idx );
idx++;
}
idx = 1
,你也可以删除 idx++;
这行代码,使用 processStruct( item, idx++ );
或者如果 idx = 0
,使用 processStruct( item, ++idx );
。 - isapir从CF11开始,您可以使用成员函数。这样您就可以访问元素和索引:
myArray = ["a", "b", "c"];
// By arrayEach() member function CF11+
myArray.each(function(element, index) {
writeOuput(element & " : " & index);
});
尝试这个(其中 i 是您的数组索引):
for (i=1; i lte ArrayLen(yourArray); i++){
processStruct(yourArray[i],i);
}
for(x in a)
脚本变体。你只展示了CFLOOP标签的CFSCRIPT版本。 - Alex