क्या कोल्डफ्यूज़न में दो एरे में शामिल होने का एक अंतर्निहित तरीका है, जावास्क्रिप्ट के array.concat()
के समान?कोल्डफ्यूजन में दो Arrays में शामिल हों
उत्तर
वास्तव में नहीं, लेकिन अनुमान लगाएं, बस जावा का उपयोग करें! :)
<cfset foo = [1,2,3]>
<cfset bar = [4,5,6]>
<cfset foo.addAll(bar)>
संदर्भ: Java's Collection Interface API।
स्रोत: http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/merging-two-arrays-267
आप Railo का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं ArrayMerge (उदा <cfset NewArray=ArrayMerge(FirstArray,SecondArray)>
)।
मैंने एडोब के कोल्डफ्यूजन बग ट्रैकर में http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=83397 पर फीचर अनुरोध के रूप में जोड़ा है। इसे वोट दें! :) – Henry
ArrayConcat बनाम। ArrayMerge बनाम ArrayAppend? कृपया यहां चर्चा करें: http://groups.google.com/group/cfml-conventional-wisdom/browse_thread/thread/95a4b511128c37ae – Henry
जावास्क्रिप्ट array.join (ओं) में डिलीमीटर द्वारा अलग सरणी के सभी तत्वों से एक स्ट्रिंग बनाता है। कोल्डफ्यूज़न में इसका एक समान कार्य ArrayToList फ़ंक्शन है। जहां तक एक सरणी को दूसरे में जोड़ना मुझे विश्वास नहीं है कि इसके लिए एक सीएफ फ़ंक्शन है। सीएफ में ऐरे कार्यों की सूची देखने के लिए http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions-pt0_03.html#3473387 देखें। या फिर कुछ इस तरह का प्रयास करें:
<cfscript> for(index = 1; index LTE ArrayLen(array2); i = i + 1) { ArrayAppend(array1, array2[i]); } </cfscript>
धन्यवाद, मेरा मतलब array.concat था। मैंने प्रश्न – Yisroel
इसके थोड़े गूंगा कैसे coldfusion कई बुनियादी कार्यों है कि एक एक पटकथा भाषा से उम्मीद होती है याद करते हैं। यहां एक है जिसे मुझे जल्दी लिखना पड़ा।
<cffunction name="mergeArrays" returntype="array" >
<cfargument name="array1" type="array" required="true" >
<cfargument name="array2" type="array" required="true" >
<cfset arrayResult = arrayNew(1) >
<cfloop array="#array1#" index="elem">
<cfset arrayAppend(arrayResult,elem) >
</cfloop>
<cfloop array="#array2#" index="elem">
<cfset arrayAppend(arrayResult,elem) >
</cfloop>
<cfreturn arrayResult>
</cffunction>
CF10 +, का उपयोग
arrayAppend(array1, array2, true);
कभी तय नहीं किया है। :) –
+1, यह प्रभावशाली है कि आपको यह प्रश्न याद आया और इसे सुधारने के लिए दो साल बाद वापस आया। – John
सीएफ 10 या Railo 4, आप Underscore.cfc library की concat() फ़ंक्शन का उपयोग एक नई सरणी का एक संयोजन है कि प्राप्त करने के लिए कर सकते हैं दो अन्य सरणी (मौजूदा सरणी को संशोधित किए बिना)। उदाहरण cfscript:
newArray = _.concat([1], [2]);
परिणाम:
// newArray == [1, 2]
इस विधि का उपयोग एक नई सरणी प्राप्त करने के लिए एक सा एक नई सरणी बनाने और दो बार उस पर ArrayAppend बुला से क्लीनर है।
(अस्वीकरण: मैं Underscore.cfc लिखा था)
मैं बेन नाडेल से लिया और इसका इस्तेमाल किया एन्क्रिप्शन और हैशिंग प्रदर्शन करने के लिए। एक जादू की तरह काम किया!
<cfscript>
// Note: BinaryDecode/CharsetDecode return java arrays.
// Unlike CF arrays, java arrays are immutable,
// so the Java addAll(..) method to merge arrays won't work here.
// http://stackoverflow.com/a/10760835/104223
// function to merge immutable arrays the long way
function mergeArrays(array1, array2){
var i = 0;
var newArray = [];
for (i = 1; i <= arrayLen(arguments.array1); i++) {
arrayAppend(newArray, arguments.array1[i]);
}
for (i = 1; i <= arrayLen(arguments.array2); i++) {
arrayAppend(newArray, arguments.array2[i]);
}
return newArray;
}
//convert the saltArray string and CustomerID string to UTF-8 byte arrays.
saltByteArray = charsetDecode(salt, "utf-8");
CustomerIdByteArray = charsetDecode(CustomerId, "utf-8");
//create a new byte array consisting of the CustomerId bytes
//appended with the salt bytes by merging the two binary arrays
//via custom function, mergeArrays
mergedBytes = mergeArrays(CustomerIdByteArray, saltByteArray);
</cfscript>
असल में मुझे लगता है कि आप इसे मुझसे प्राप्त कर चुके हैं, हाहा .. और इस धागे को देखकर, * मुझे * शायद इसे @ नोज के उत्तर से मिला और इसे cfscript में दोबारा लिखा;) – Leigh
आप आसानी से इस तरह दो सूचियों को श्रेणीबद्ध कर सकते हैं:
<cfset combolist = ListAppend(lista,listb, ",")>
तो, पहले ArrayToList()
का उपयोग करके सूचियां करने के लिए अपने दो सरणियों परिवर्तित। ListAppend() के साथ दो सूचियों को संयोजित करें और फिर उत्तर को वापस ListToArray()
के साथ एक सरणी में परिवर्तित करें।
मुझे नहीं पता कि यह कितना कुशल है, लेकिन कोड बहुत आसान है। मुझे arrayAppend() का उपयोग करना अच्छा लगेगा, लेकिन मैं कोल्डफ्यूजन 8 में हूं।
बस ध्यान रखें कि यह एक पूर्ण समतुल्य नहीं है ए) किसी रिक्त सरणी तत्वों को छोड़ें और बी) जो भी डेलीमीटर उपयोग किया जाता है, पर विभाजित सरणी मानों को विभाजित करें। यानी एकल मान 'एआर [1] = "डो, जॉन" 'बन जाएगा' एआर [1] = डो, एआर [2] = जॉन'। – Leigh
लेघ, आप एक अच्छा मुद्दा बनाते हैं। यह एक अलग सूची डिलीमीटर का उपयोग करके चारों ओर काम किया जा सकता है, जैसे ~~~, या ~! ~! ~! जो सरणी के भीतर दिखाई नहीं देगा। –
सच है, हालांकि इस मामले में कई वर्ण काम नहीं करेंगे। सीएफ के अधिकांश संस्करणों में, कई पात्रों को अलग-अलग डिलीमीटर के रूप में माना जाता है। यानी '~! 'का अर्थ है सीएफ मूल्यों को' ~ '** या **'! 'द्वारा सीमित के रूप में देखता है। (सीएफ 10 में चीजें बदल सकती हैं)। एसीआईआई 30, और [खाली सूची तत्वों को संरक्षित करना) जैसे एक चरित्र का उपयोग करना (http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions_l_21.html), इसे बहुत करीब लेना चाहिए। – Leigh
- 1. जावा में दो सरणी में शामिल हों?
- 2. पायथन में दो जेनरेटर कैसे शामिल हों?
- 3. दो चयन विवरण में शामिल हों
- 4. वर्ग दो तालिका में शामिल हों
- 5. कर्सरलोडर - दो टेबल क्वेरी में शामिल हों?
- 6. एक्सकोड: दो लाइनों में कैसे शामिल हों?
- 7. दो असंबद्ध भंडारों में कैसे शामिल हों?
- 8. PHP दो चर नामों में शामिल हों
- 9. CouchDB "शामिल हों" दो दस्तावेज़ों
- 10. एकाधिक फ़ाइलों में शामिल हों
- 11. दो अलग डेटाबेस से परिणाम में शामिल हों
- 12. संदर्भ मेनू में शामिल हों
- 13. mysql समस्या में शामिल हों
- 14. जेपीए: जेपीक्यूएल में शामिल हों
- 15. अंतर शामिल हों और भीतरी शामिल हों
- 16. अंतर शामिल हों बनाम वाम शामिल हों
- 17. दो arrays
- 18. दो arrays
- 19. जहां अंदरूनी पहले खंड में शामिल हों
- 20. ओवरलैपिंग मंडलियों में कैसे शामिल हों?
- 21. पावरहेल "शामिल हों"
- 22. सूची के लिए बयान में शामिल हों
- 23. कोर डेटा: 3 टेबल में शामिल हों?
- 24. ट्रिकी एसक्यूएल क्वेरी में शामिल हों
- 25. वर्ग - बाएं शामिल हों -
- 26. एकाधिक IObservable अनुक्रमों में कैसे शामिल हों?
- 27. सशर्त आंतरिक शामिल हों
- 28. NumPy: दो Arrays में तत्वों की तुलना
- 29. स्वयं एसक्यूएल में कैसे शामिल हों?
- 30. PHP/MYSQL एकाधिक तालिकाओं में शामिल हों
विचित्र रूप से पर्याप्त, अंतर्निहित जावा विधियां हमेशा अपेक्षित रूप से काम नहीं करती हैं। मुझे अभी भी पता नहीं है कि कब और क्यों।मैं अक्सर डुप्लिकेट को हटाने, सरणी में शामिल होने और सॉर्ट करने के लिए जावा विधियों का उपयोग करता हूं, मुझे याद है कि कभी-कभी यह एरे बनाने के तरीके के आधार पर काम नहीं करता है, आप जावा विधि आदि को कॉल करने से पहले कौन से ऑपरेशन करते हैं। इसलिए ध्यान दें! –
@ zarko.susnjar - मुझे पता है कि यह एक पुराना धागा है, लेकिन 'removeAll',' retainAll', आदि जैसे विधियों के साथ अप्रत्याशित परिणामों का कारण यह है कि जावा विधियां आपके सामान्य सीएफ फ़ंक्शन के रूप में उतनी ही कम नहीं हैं। वे आमतौर पर डेटा प्रकार संवेदनशील होते हैं। तो '" 2 "' (स्ट्रिंग) और 'वैल (2)' (संख्या) को विभिन्न मान/तत्व माना जाता है। जब तक कि आप पूरी तरह से निश्चित नहीं हैं कि दोनों सरणी मिलान में डेटा प्रकार हैं, तो आप अन्य विधियों IMO का उपयोग करने के बेहतर हैं। – Leigh
बेशक, यदि आप किसी चीज़ के बारे में निश्चित नहीं हैं, तो हमेशा सुरक्षित और सिद्ध तरीके से जाएं। –