Если вы хотите вернуть рандомизированный список ответов, вы можете использовать Java Collections для взаимодействия со списком ColdFusion (после преобразования списка в массив).
<cfscript>
// Our original answer list.
strlist1 = "rttt,ddde,ffss,gggd" ;
// Convert our lists to arrays.
answerArray1 = ListToArray(strList1) ;
// Create the Java Collection object.
C = CreateObject( "java", "java.util.Collections" ) ;
// Java shuffle() our array.
C.shuffle(answerArray1) ;
// Output our shuffled array (as an array).
writeDump(answerArray3) ;
// Or convert it to a list for output.
randomAnswerList = ArrayToList(answerArray3) ;
writeoutput(randomAnswerList) ;
</cfscript>
https://trycf.com/gist/3a1157a11154575e705411814d10ea92/acf?theme=monokai
Поскольку вы работаете с небольшими списками, Java shuffle()
должна быть довольно быстрой.Я считаю, что с большими списками это может быть гораздо более неэффективно, чем создание функции рандомизации для перемешивания списка.Это работает, потому что массивы ColdFusion автоматически также являются массивами Java.CF очень хорошо работает с Java, особенно для этих типов манипуляций.
Примечание 1. Java shuffle()
работает непосредственно со своим входным массивом, поэтому вы фактически изменяете сам массив.
Примечание 2. В зависимости от того, что вы хотите сделать со списком, может быть гораздо проще оставить свои перемешанные ответы в объекте Array и работать с ним.Кроме того, Java Collection.shuffle()
будет работать со структурами.И вы генерируете список ответов из запроса?Это все еще будет работать, но в зависимости от того, как вы будете использовать запрос впоследствии, вы, вероятно, не захотите использовать shuffle()
непосредственно для объекта запроса.