2012-01-19 14 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

की आवश्यकता है जावा विधि है यदि आपके होस्ट पर जावा तक पहुंच है तो त्वरित और आसान भी: ए = [1, 2, 3, 4, 5]; createObject ("जावा", "java.util.Collections")। रिवर्स (ए); writeDump (ए); Paul

1

ओह लेकिन एक 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

+1

मुझे पता है कि वह सरणीॉर्ट कहता है, लेकिन वह पूछता है कि सरणी को कैसे उलटना है और इसे सॉर्ट नहीं करना है। अच्छा समाधान, यदि मूल सरणी क्रमबद्ध है अन्यथा यह काम नहीं करेगा। –

+1

हालांकि इस लड़के को इसकी आवश्यकता नहीं है, [java.util.Collections] (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Collections.html#reverse%28java.util लिस्ट% 2 9) छोटे एरे के लिए – Leigh

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

चाल चल जाएगा।

+1

ठीक करने के लिए अच्छी तरह से काम करता है - लेकिन बड़े लोगों के लिए महंगा –

+3

अच्छा विचार अगर सरणी के भीतर डेटा सरल है। अगर यह वस्तुओं या structs या सरणी की एक सरणी काम नहीं करेगा। –

+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

FYI करें सीएफ में सरणी सिर्फ एक ArrayList है, इसलिए ...

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

और मैं arrayReverse() लिख क्योंकि सरणी सीएफ में मूल्य से पारित हो जाता है (CF2016 के this.passArraybyReference तक नहीं) परेशान नहीं होता तो यह सुपर अक्षम है।