2017-09-04 78 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