ColdFusion按键排序结构

use*_*563 2 coldfusion struct

如何通过键而不是值来对coldfusion结构进行排序.

structSort(struct, "text", "asc")
Run Code Online (Sandbox Code Playgroud)

它对值进行排序,但我想对键进行排序.

有谁知道怎么做?

谢谢

Ale*_*lex 7

如果您使用的是CF2016,则可以使用它structNew("ordered")来创建一个保持其插入顺序的结构.

orderedStruct = structNew("ordered");

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

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

writeDump(orderedStruct);
Run Code Online (Sandbox Code Playgroud)

在旧版本的CF上,您必须依赖Java的LinkedHashMap.

orderedStruct = createObject("java", "java.util.LinkedHashMap").init();
Run Code Online (Sandbox Code Playgroud)

但要注意orderedStruct现在的关键名称区分大小写!另请注意,转储结构将按字母顺序显示条目.但是,循环结构将产生正确的顺序.

  • 简写语法为`orderedStruct = [:];`。 (2认同)