首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环遍历cf9中的列表

循环遍历cf9中的列表
EN

Stack Overflow用户
提问于 2010-01-07 22:03:08
回答 3查看 15.3K关注 0票数 12

开发人员指南的第116页说:“与cfloop标签不同,CFScript for-in循环不提供对查询和列表循环的内置支持。”

问:如何使用ColdFusion 9中的新脚本语法遍历列表?

代码语言:javascript
运行
复制
<cfloop list="#qry.Columnlist#" index="FieldName">
   <cfset form[FieldName] = qry[FieldName][1]>
</cfloop>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-29 22:38:52

您还可以尝试listToArray,然后在CF9中对数组使用for-in结构,如下所示:

代码语言:javascript
运行
复制
<cfscript>
aCol = listToArray (qry.ColumnList);

for( fieldName in aCol ){
    form[fieldName]  = qry[fieldName][1];
}

</cfscript>
票数 18
EN

Stack Overflow用户

发布于 2010-01-07 22:14:36

代码语言:javascript
运行
复制
<cfscript>
  var i = 0;
  var l = ListLen(qry.Columnlist);
  var FieldName = "";
  for (i = 1; i lte l; i = i + 1)  // you also can use i++ instead
  {
    FieldName = ListGetAt(qry.Columnlist, i);
    form[FieldName] = qry[FieldName][1];
  }
</cfscript>

对上面的代码进行更好的编辑(可能会更快一点,对于非常繁重的循环):

代码语言:javascript
运行
复制
<cfscript>
  var i = 0;
  var Fields = ListToArray(qry.Columnlist);
  var FieldName = "";
  var l = arrayLen(Fields);
  for (i = 1; i lte l; i = i + 1)  // you also can use i++ instead
  {
    FieldName = Fields[i];
    form[FieldName] = qry[FieldName][1];
  }
</cfscript>
票数 12
EN

Stack Overflow用户

发布于 2010-01-08 03:37:21

我会先把列表转换成一个数组。ListGetAt()在一个循环中被调用n次是没有效率的。然而,ArrayLen()应该相当快。

代码语言:javascript
运行
复制
<cfscript>
arr = ListToArray(qry.Columnlist);

for (i = 1; i <= ArrayLen(arr); i++)
{
    fieldName = arr[i];
    form[FieldName] = qry[FieldName][1];
}
</cfscript>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2020808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档