你好,我有一个字符串数组,需要按照从后往前的顺序输出它们。
我没有找到 arrayReverse()
函数,但是我只是在学习 ColdFusion。
你好,我有一个字符串数组,需要按照从后往前的顺序输出它们。
我没有找到 arrayReverse()
函数,但是我只是在学习 ColdFusion。
您只需要逆序遍历数组即可。
<cfloop index="i" from="#arrayLen(myArray)#" to="1" step="-1">
<cfoutput>#myArray[i]#</cfoutput>
</cfloop>
我认为你需要使用Java方法来真正地反转该数组。
<cfscript>
// and for those who use cfscript:
for ( var i = arrayLen( myArray ); i >= 1; i-- ) {
writeOutput( myArray[i] );
}
</cfscript>
提供信息,CF 中的数组就是一个ArrayList,因此...
arr = [1,2,3];
createObject("java", "java.util.Collections").reverse(arr);
writeDump(arr); // arr becomes [3,2,1]
由于在 CF 中数组是按值传递的(直到 CF2016 的 this.passArraybyReference
),所以我不会费心编写 arrayReverse()
,因为它非常低效。
function init(required array arr) {
var arrLen = arrayLen(arr);
for (var i = 1; i <= (arrLen / 2); i++) {
var swap = arr[arrLen + 1 - i];
arr[arrLen + 1 - i] = arr[i];
arr[i] = swap;
}
return arr;
}
我已经测试过了,它可以在字符串数组和对象等上运行。
writeOutput(arrayReverse(['a','b','c']) ); // => ['c', 'b', 'a']
var a = ['apple', 'ball', 'cat', 'dog'];
arrayReverse(a);
writeOutput(a); // => ['dog', 'cat', 'ball', 'apple']
我将它放入了自己的组件中,这样在不同的项目中使用起来更加容易。
哦,但是有一个ArraySort方法!
ArraySort( array, sort_type [, sort_order] );
返回布尔值。
array
通过引用进行更新。
sort_type
可以是numeric
、text
或textnocase
sort_order
可以是asc
或desc
<cfscript>
test = [ "c", "d", "a", "b" ];
arraySort( test, 'textnocase' );
test is now:
[ "a", "b", "c", "d" ]
</cfscript>
请查看此处的文档:
https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-a-b/arraysort.html
<cfscript>
test = [ "a", "b", "c", "d" ];
writeDump(listToArray(reverse(arrayToList(test))));
</cfscript>
这个可以解决问题。
test = ['hello', 'cat']
,那么你会得到 ['tac', 'olleh']
。 - Joseph Dykstra
arrayReverse
函数:http://www.cflib.org/udf/ArrayReverse - ale