キーではなく値でColdFusion構造体をソートするにはどうすればいいですか?キーによるColdFusionソート構造
structSort(struct, "text", "asc")
これは値をソートしますが、キーをソートしたいと思います。
誰でもそれを行う方法を知っていますか?
おかげ
キーではなく値でColdFusion構造体をソートするにはどうすればいいですか?キーによる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
のキー名を注意してください!また、構造体をダンプすると、アルファベット順にエントリが表示されます。ただし、構造体をループすると正しい順序が得られます。
省略形の構文は 'orderedStruct = [:];' – isapir
ListSort(structKeyList(struct)) –
これはソートされた構造体キーのリストを返しますが、値は失われました。私は、キーを並べ替えるが、キーにリンクされた値を保持したいと思います。 – user6824563
@ user6824563 CF2016を使用している場合は、 'structNew(" ordered ")'を使用してソートされたキーに値を再割り当てできます。詳細は私の答えを見てください。 – Alex