2017-09-04 114 views
0

如何通過鍵不是值排序Coldfusion結構。按鍵ColdFusion排序結構

structSort(struct, "text", "asc") 

它對值進行排序,但我想對鍵進行排序。

有誰知道該怎麼做?

感謝

+2

'ListSort(structKeyList(struct))' –

+0

感謝它返回排序的結構鍵列表,但我失去了價值觀。我想對鍵進行排序,但保留鏈接到鍵的值。 – user6824563

+2

@ user6824563如果你在CF2016上,你可以使用'structNew(「ordered」)'並重新賦值給排序後的鍵。詳情請參閱我的回答。 – Alex

回答

4

如果您對CF2016,您可以使用structNew("ordered")創建保持其插入順序結構。

orderedStruct = structNew("ordered"); 

structKeys = structKeyArray(struct); 
arraySort(structKeys, "text", "asc"); 

for (key in structKeys) { 
    orderedStruct[key] = struct[key]; 
} 

writeDump(orderedStruct); 

在較早版本的CF上,您必須依賴Java的LinkedHashMap。

orderedStruct = createObject("java", "java.util.LinkedHashMap").init(); 

但要注意的orderedStruct鍵名現在是區分大小寫的!另請注意,轉儲結構將按字母順序顯示條目。但是,循環結構會產生正確的順序。

+0

簡寫語法爲'orderedStruct = [:];' – isapir