JavaScriptと同様に、ColdFusionで2つの配列を結合する組み込みの方法はありますarray.concat()
か?
9 に答える
CF10 +、使用
arrayAppend(array1, array2, true);
https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-ab/arrayappend.html
実際にはそうではありませんが、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
Railoを使用している場合は、 ArrayMerge(Eg )を使用できます<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>
CF10またはRailo4では、Underscore.cfcライブラリのconcat()関数を使用して、他の2つの配列を連結した新しい配列を取得できます(既存の配列を変更する必要はありません)。cfscriptの例:
newArray = _.concat([1], [2]);
結果:
// newArray == [1, 2]
このメソッドを使用して新しい配列を取得する方が、新しい配列を作成してArrayAppendを2回呼び出すよりも少しクリーンです。
(免責事項:Underscore.cfcを作成しました)
javascriptでは、array.join(s)は、区切り文字sで区切られた配列のすべての要素から文字列を作成します。これに似たColdFusionの関数は、ArrayToList関数です。配列を別の配列に追加する限り、そのためのCF関数はないと思います。CFの配列関数のリストを確認するには、 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>
これをBenNadelから取得し、暗号化とハッシュを実行するために使用しました。チャームのように働いた!
<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>
次のように2つのリストを簡単に連結できます。
<cfset combolist = ListAppend(lista,listb, ",")>
したがって、最初にを使用して2つの配列をリストに変換しますArrayToList()
。2つのリストをListAppend()と組み合わせてから、回答を。を使用して配列に変換し直しListToArray()
ます。
これがどれほど効率的かはわかりませんが、コードは非常に単純です。arrayAppend()を使用したいのですが、ColdFusion8を使用しています。
はい、ColdFusion(10+)には、2つの配列を追加する関数が組み込まれています。
スクリプトバージョン:array1.append(array2, true);
タグバージョン:arrayAppend(array1, array2, true);