Struct 按键的ColdFusion排序结构

Struct 按键的ColdFusion排序结构,struct,coldfusion,Struct,Coldfusion,如何按键而不是值对coldfusion结构进行排序 structSort(struct, "text", "asc") 它对值进行排序,但我想对键进行排序 有人知道怎么做吗 谢谢如果您使用的是CF2016,您可以使用structNew(“ordered”)创建一个保持插入顺序的结构 orderedStruct = structNew("ordered"); structKeys = structKeyArray(struct); arraySort(structKeys, "text", "

如何按键而不是值对coldfusion结构进行排序

structSort(struct, "text", "asc")
它对值进行排序,但我想对键进行排序

有人知道怎么做吗


谢谢

如果您使用的是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
键名现在区分大小写!还要注意,转储结构将按字母顺序显示条目。但是,在结构上循环将产生正确的顺序。

ListSort(structKeyList(struct))
感谢它返回已排序的结构键列表,但我丢失了值。我想对键进行排序,但保留与键链接的值。@user6824563如果您在CF2016上,您可以使用
structNew(“ordered”)
并将值重新分配给已排序的键。有关详细信息,请参见我的答案。@user6824563您可以在有序列表上循环并访问结构。速记语法为
orderedStruct=[:]我喜欢简洁的语法