如何解决Coldfusion 11 的 islistinlist 函数
我有这个功能并且在 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,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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。