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

関連する問題