我很好奇,有沒有另一種方法來轉換一個結構到一個數組在Coldfusion沒有循環呢?我知道它,如果我們在循環使用爲完成這種方式:有沒有辦法將結構轉換爲數組而不使用循環?
local.array = [];
for (local.value in local.struct)
{
arrayAppend(local.array, local.value);
}
我很好奇,有沒有另一種方法來轉換一個結構到一個數組在Coldfusion沒有循環呢?我知道它,如果我們在循環使用爲完成這種方式:有沒有辦法將結構轉換爲數組而不使用循環?
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()));
}
只要記住,鑰匙是案件sessilvi!
ColdFusion中10或Railo 4,如果你想值(而不是鍵)的陣列,則可以使用Underscore.cfc library像這樣:
_ = new Underscore();// instantiate the library
valueArray = _.toArray({first: 'one', second: 'two'});// returns: ['one','two']
注:ColdFusion的結構是無序的,這樣你就不會保證對結果數組中的值有任何特定的順序。
(聲明:我寫了Underscore.cfc)