有没有一种方法可以将结构转换为数组而不使用循环?

| 我很好奇,是否有另一种方法可以在Coldfusion中将结构转换为数组而不进行循环?我知道如果我们使用for in循环可以通过这种方式完成:
local.array = [];
for (local.value in local.struct)
{
   arrayAppend(local.array, local.value);
}
    
已邀请:
StructKeyArray是否符合您的要求?   描述      在ColdFusion中查找键   结构体。     
如果您尝试维护结构中的顺序,则可以始终使用Java LinkedHashMap,如下所示:
cfmlLinkedMap = createObject(\"Java\", \"java.util.LinkedHashMap\").init();

cfmlLinkedMap[\"a\"] = \"Apple\";
cfmlLinkedMap[\"b\"] = \"Banana\";
cfmlLinkedMap[\"c\"] = \"Carrot\";

for(key in cfmlLinkedMap){
    writedump(cfmlLinkedMap[key]);  
}
您也可以通过更多的“ java”方式执行相同的操作,虽然不确定为什么要这么做,但始终可以选择:
//no need to init
linkedMap = createObject(\"Java\", \"java.util.LinkedHashMap\");

//java way
linkedMap.put(\"d\",\"Dragonfruit\");
linkedMap.put(\"e\",\"Eggplant\");
linkedMap.put(\"f\",\"Fig\");

//loop through values
iterator = linkedMap.entrySet().iterator();        

while(iterator.hasNext()){
    writedump(iterator.next().value);   
}

//or

//loop through keys
iterator = linkedMap.keySet().iterator();

while(iterator.hasNext()){
    writedump(linkedMap.get(iterator.next()));  
}
只需记住,键是大小写敏感的!     
在Coldfusion 10或Railo 4中,如果您想要一个值数组(而不是键),则可以使用Underscore.cfc库,如下所示:
_ = new Underscore();// instantiate the library

valueArray = _.toArray({first: \'one\', second: \'two\'});// returns: [\'one\',\'two\']
注意:Coldfusion结构是无序的,因此不保证您对结果数组中的值具有任何特定的顺序。 (免责声明:我写了Underscore.cfc)     

要回复问题请先登录注册