ColdFusionで2つの配列を結合します
-
28-09-2019 - |
質問
JavaScriptのように、ColdFusionで2つの配列を結合する組み込みの方法はありますか array.concat()
?
解決
そうではありませんが、何を推測してください、Javaを使用してください! :)
<cfset foo = [1,2,3]>
<cfset bar = [4,5,6]>
<cfset foo.addAll( bar )>
ソース: http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/merging-two-arrays-267
他のヒント
CF10+、使用
arrayAppend(array1, array2, true);
https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-ab/arrayappend.html
使用している場合 鉄道, 、使用できます arraymerge (例えば <cfset NewArray=ArrayMerge(FirstArray,SecondArray)>
).
コールドフュージョンがスクリプト言語に期待される多くの基本的な機能を逃すのはちょっと愚かです。これが私がすぐに書かなければならなかったものです。
<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>
CF 10またはRailo 4では、concat()関数を使用できます。 underscore.cfcライブラリ 他の2つの配列の連結である新しい配列を取得するには(既存の配列を変更せずに)。例CFScript:
newArray = _.concat([1], [2]);
結果:
// newArray == [1, 2]
このメソッドを使用して新しい配列を取得することは、新しい配列を作成し、ArrayAppendを2回呼び出すよりも少しきれいです。
(免責事項:underscore.cfcを書きました)
JavaScript Array.Joinでは、区切り文字sで区切られた配列のすべての要素から文字列を作成します。 ColdFusionにおけるこれと同様の機能は、Arraytolist関数です。別の配列に配列を追加する限り、私はそのためのCF関数があるとは思わない。小切手 http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions-pt0_03.html#3473387 CFの配列関数のリストを表示するには。または次のようなことを試してみてください:
<cfscript> for(index = 1; index LTE ArrayLen(array2); i = i + 1) { ArrayAppend(array1, array2[i]); } </cfscript>
このような2つのリストを簡単に連結できます。
<cfset combolist = ListAppend(lista,listb, ",")>
したがって、最初に2つの配列を使用してリストに変換します ArrayToList()
. 。 2つのリストをListAppend()と組み合わせて、回答を配列に戻します。 ListToArray()
.
これがどれほど効率的かはわかりませんが、コードは非常に簡単です。 ArrayAppend()を使用したいのですが、ColdFusion 8です。
私はこれをベン・ナデルから取り、それを使用して暗号化とハッシュを実行しました。魅力のように働いた!
<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>