csv - 如何将数组输出为逗号分隔的字符串?

标签 csv coldfusion coldfusion-2016

我有一个名为 device 的数组,它看起来像这样(简化):

label : "Device 1",
exhibits : [{
    item : 1,
    desc : "This is a sample"
},{
    item : 2,
    desc : "This is another sample"
},{
    item : 3,
    desc : "This is a third"
}]

我正在尝试将 exhibits 整齐地打印为 PDF,所以我想像这样用逗号分隔:

1, 2, 3

这是我的代码:

<cfloop array="#device.exhibits#" index="exhibit">
    #exhibit.item#
</cfloop>

但我明白了:

123

是的,我可以手动确定是否应该有逗号,但是有更好的方法吗?

最佳答案

由于您使用的是 CF11+,因此可以将 ArrayMap 函数与 ArrayList 结合使用,将数组转换为列表。

exhibits.map( function(i) { return i.item ; } ).toList() ;

通过您的示例数组,它会为您提供“1,2,3”。

在我的另一个答案中,我逐步处理了空元素。由于这是一个结构数组,我不知道这是否会成为问题。您如何获取 exhibits 数组的这些数据?

编辑:

exhibits.map( function(i) { return i.item ; } )
    .filter( function(j) { return len(j) ; } )
    .toList() ;

将返回删除了空元素的列表。

编辑2:

根据@TravisHeeter 的问题,如果您更喜欢 lambda 表达式或箭头函数,可以在 Lucee 5 中使用它们。

exhibits.map( (i) => i.item ).filter( (j) => len(j) ).toList()

https://trycf.com/gist/907a68127ddb704611b191d494aa94ce/lucee5?theme=monokai

关于csv - 如何将数组输出为逗号分隔的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342572/

相关文章:

python - 使用 Python 在 CSV 文件中写入完全相同的内容

java - 如何将java列表传递给coldfusion cfselect?

regex - 读取两个字符串之间的子字符串 CF

ColdFusion - 连接到 LDAP 服务器

session - 如何在 session 结束时运行查询?

java - 如何构建 JAR 文件

linux - 将逐行 CSV 转换为逗号 CSV 的最简单方法

MySQL 以 mm/dd/yyyy 格式加载日期

linux - 如何仅按第二个字段(数字)排序?

javascript - 禁用表单提交,直到使用 jQuery 验证字段