簡體   English   中英

如何反轉數組

[英]How do I reverse an array

嗨我有一個字符串數組,我需要將它們從最后一個輸出到第一個。

我沒有看到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>

我寫了這個函數來反轉一個數組。 它修改數組並返回它。

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']

我將它放入它自己的組件中,因此在不同的項目中使用它更容易。

CF中的FYI數組只是一個ArrayList ,所以......

arr = [1,2,3];
createObject("java", "java.util.Collections").reverse(arr);
writeDump(arr);   // arr becomes [3,2,1]

而且我不打算編寫arrayReverse()因為數組是通過CF中的值傳遞的(直到CF2016的this.passArraybyReference ),所以它的效率非常低。

哦,但有一個ArraySort方法!

ArraySort( array, sort_type [, sort_order] );

返回布爾值。

array通過引用更新。

sort_type可以是numerictexttextnocase

sort_order可以是ascdesc

<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-ab/arraysort.html

<cfscript>
    test = [ "a", "b", "c", "d" ];
    writeDump(listToArray(reverse(arrayToList(test))));
</cfscript>

會做的伎倆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM