Coldfusion 11 的 islistinlist 函数
islistinlist function for coldfusion 11
我有这个功能,运行在 coldfusion 2016 和 lucee 上完美无瑕,但我 运行 在 cf11 中,它失败了。
我想了解如何让它与 cf11 一起工作
private any function isListInList(list1, list2, returnBoolean = true){
var rv = false;
var matches = [];
listToArray(list1).each(
function(element) {
if(listToArray(list2).containsNoCase(element)){
rv = true;
arrayAppend(matches, element);
}
}
);
return arguments.returnBoolean ? rv : matches;
}
此版本的函数将在 CF11
上编译并运行
private any function isListInList(list1, list2, returnBoolean = true){
var rv = false;
var matches = [];
var arr1 = listToArray(list1);
var arr2 = listToArray(list2);
arr1.each(
function(element) {
if(arr2.findNoCase(element)){
rv = true;
arrayAppend(matches, element);
}
}
);
return arguments.returnBoolean ? rv : matches;
}
这个使用 for()
循环的版本将针对大型数组进行优化,因为它会在找到匹配项时使循环短路,而您只需要返回布尔值。
private any function isListInList(list1, list2, returnBoolean = true){
var arr1 = listToArray(list1);
var arr2 = listToArray(list2);
var rv = false;
var matches = [];
for( var element in arr1 ) {
if(arr2.findNoCase(element)){
if( returnBoolean ) {
return true;
} else {
arrayAppend(matches, element);
}
}
}
return arguments.returnBoolean ? false : matches;
}
我有这个功能,运行在 coldfusion 2016 和 lucee 上完美无瑕,但我 运行 在 cf11 中,它失败了。
我想了解如何让它与 cf11 一起工作
private any function isListInList(list1, list2, returnBoolean = true){
var rv = false;
var matches = [];
listToArray(list1).each(
function(element) {
if(listToArray(list2).containsNoCase(element)){
rv = true;
arrayAppend(matches, element);
}
}
);
return arguments.returnBoolean ? rv : matches;
}
此版本的函数将在 CF11
上编译并运行private any function isListInList(list1, list2, returnBoolean = true){
var rv = false;
var matches = [];
var arr1 = listToArray(list1);
var arr2 = listToArray(list2);
arr1.each(
function(element) {
if(arr2.findNoCase(element)){
rv = true;
arrayAppend(matches, element);
}
}
);
return arguments.returnBoolean ? rv : matches;
}
这个使用 for()
循环的版本将针对大型数组进行优化,因为它会在找到匹配项时使循环短路,而您只需要返回布尔值。
private any function isListInList(list1, list2, returnBoolean = true){
var arr1 = listToArray(list1);
var arr2 = listToArray(list2);
var rv = false;
var matches = [];
for( var element in arr1 ) {
if(arr2.findNoCase(element)){
if( returnBoolean ) {
return true;
} else {
arrayAppend(matches, element);
}
}
}
return arguments.returnBoolean ? false : matches;
}