我很好奇,是否有另一种方法可以在Coldfusion中将结构转换为数组而不会在其上进行循环?我知道如果我们使用for in循环可以这样做:
local.array = [];
for (local.value in local.struct)
{
arrayAppend(local.array, local.value);
}
答案 0 :(得分:5)
StructKeyArray是否符合您的要求?
描述
在ColdFusion中查找键 结构
答案 1 :(得分:2)
如果您尝试维护结构中的顺序,则可以始终使用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()));
}
请记住,密钥是SeNsItIvE!
答案 2 :(得分:1)
在Coldfusion 10或Railo 4中,如果你想要一组数值(而不是键),你可以使用Underscore.cfc library,如下所示:
_ = new Underscore();// instantiate the library
valueArray = _.toArray({first: 'one', second: 'two'});// returns: ['one','two']
注意:Coldfusion结构是无序的,因此不保证您对结果数组中的值有任何特定的顺序。
(免责声明:我写过Underscore.cfc)