2012-01-19 8 views
6

안녕하세요. 저는 문자열 배열을 가지고 있으며, 마지막 배열부터 첫 번째 배열까지 출력해야합니다.어떻게 배열을 뒤집을 수 있나요?

나는 arrayReverse() 기능이 표시되지 않습니다,하지만 난 단지 ColdFusion에서

+2

구조에 CFLib! 누군가는 이미'arrayReverse' 함수를 작성했습니다 : http://www.cflib.org/udf/ArrayReverse – ale

답변

12

에게 배우고 할 수 있습니다 당신은 자바 방법을 사용할 필요가 생각 역

<cfloop index="i" from="#arrayLen(myArray)#" to="1" step="-1"> 
    <cfoutput>#myArray[i]#</cfoutput> 
</cfloop> 

의 배열을 통해 단지 루프 배열을 정말로 뒤집습니다.

<cfscript> 
// and for those who use cfscript: 
for (var i = arrayLen(myArray); i >= 1; i--) { 
    writeOutput(myArray[i]); 
} 
</cfscript> 
+0

당신이하는 일은 값을 출력하는 것입니다, 배열을 거꾸로 루프하는 것입니다. –

+3

자바 메소드는 다음과 같습니다. 호스트의 java에 액세스 할 수있는 경우에도 빠르고 쉽습니다. a = [1, 2, 3, 4, 5]; createObject ("java", "java.util.Collections"). reverse (a); writeDump (a); Paul

1

아,하지만 ArraySort 방법이 있습니다!

ArraySort(array, sort_type [, sort_order]);

반환 부울.

array은 참조로 업데이트됩니다.

sort_typenumeric, text 또는

sort_ordertextnocase 여기 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

+1

나는 그가 arraySort라고 말하지만 배열을 뒤집어서 정렬하는 법을 묻는다. 좋은 해결책, 그렇지 않으면 원래의 배열이 정렬되지 않으면 작동하지 않습니다. –

+1

이 사람은 필요하지 않지만 [java.util.Collections] (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Collections.html#reverse%28java.util .List % 29)는 반전을 위해 잘 작동합니다 – Leigh

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

트릭을 수행합니다.

+1

작은 배열에서는 괜찮지 만 큰 배열에서는 비싸지 만 –

+3

배열 내의 데이터가 단순하면 좋은 생각입니다. 그것의 배열 개체 또는 구조체 또는 배열 경우 작동하지 않을 것이다. –

+0

예 간단한 유형에만 적용됩니다. – Paul

1

이 기능을 사용하여 배열을 뒤집습니다. 배열을 수정하여 반환합니다.

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

내가 자신의 구성 요소에 넣어, 그래서 다른에서 사용하기 쉽게 프로젝트.

1

은 참고 CF의 배열은 단지 ArrayList, 그래서 ...

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

을 그리고 난 배열 (안 CF2016의 this.passArraybyReference까지) CF에 값으로 전달되기 때문에 arrayReverse()를 작성 귀찮게하지 않을 그래서 그것은 매우 비효율적이다.

관련 문제