<!--- ============ W2M LISTCOMPARE ============ --->
<CFFUNCTION name="ListCompare" output="no" hint="This function will compare two lists and return True if the lists share any value in common. It can also return a new list with just the common values.">
<CFARGUMENT name="List1" required="Yes">
<CFARGUMENT name="List2" required="Yes">
<CFARGUMENT name="CaseSensitive" required="No" type="boolean" default="False">
<CFARGUMENT name="ReturnSameList" required="No" type="boolean" default="False"><!--- Set this to True to return a list of the common values instead of a boolean. --->
<CFARGUMENT name="strDelimiter" required="No" type="string" default=","><!--- Delimiters used in List 1 and in any returned list. --->
<CFARGUMENT name="strDelimiter2" required="No" type="string" default=","><!--- Delimiters used in List 2. --->
<!---
###################################################
## Author: George Jaros ##
## Script Name: ColdFusion ListCompare Function ##
## Copyright 2007 George Jaros & Web 2 Market ##
## www.georgejaros.com www.web2market.com ##
## This code may be replicated as long as ##
## this header statement is included. The ##
## Instructions below may be removed. ##
###################################################
This function will compare two lists and return True if the lists share any value in common.
There is also the option to make the search case sensitive or to return a list of the common values instead of a boolean.
Examples:
List_1 = "a,b,c,d"
List_2 = "1,2,3,4"
List_3 = "1,2,a,b"
List_4 = "A,B,X,Y"
List_5 = "C,D,1,2"
listCompare(List_2,List_1) = False
listCompare(List_3,List_1) = True
listCompare(List_4,List_1) = True
listCompare(List_5,List_1) = True
listCompare(List_1,List_2) = False
listCompare(List_3,List_2) = True
listCompare(List_4,List_2) = False
listCompare(List_5,List_2) = True
listCompare(List_1,List_3) = True
listCompare(List_2,List_3) = True
listCompare(List_4,List_3) = True
listCompare(List_5,List_3) = True
listCompare(List_1,List_4) = False
listCompare(List_2,List_4) = False
listCompare(List_3,List_4) = False
listCompare(List_5,List_4) = False
listCompare(List_1,List_5) = True
listCompare(List_2,List_5) = True
listCompare(List_3,List_5) = True
listCompare(List_4,List_5) = False
listCompare(List_1,List_4,1) = False
listCompare(List_2,List_4,1) = False
listCompare(List_3,List_4,1) = False
listCompare(List_5,List_4,1) = True
listCompare(List_1,List_5,1) = False
listCompare(List_2,List_5,1) = True
listCompare(List_3,List_5,1) = True
listCompare(List_4,List_5,1) = False
listCompare(List_1,List_3,0,1) = "a,b"
listCompare(List_2,List_3,0,1) = "1,2"
listCompare(List_4,List_3,0,1) = "A,B"
listCompare(List_5,List_3,0,1) = "1,2"
listCompare(List_1,List_5,1,1) = ""
listCompare(List_2,List_5,1,1) = "1,2"
listCompare(List_3,List_5,1,1) = "1,2"
listCompare(List_4,List_5,1,1) = ""
--->
<CFSET blnCompared = False>
<CFSET lstSameList = "">
<CFLOOP list="#List1#" index="idx" delimiters="#strDelimiter#">
<CFIF CaseSensitive>
<CFIF ListFind(List2,idx,strDelimiter2)>
<CFSET blnCompared = True>
<CFSET lstSameList = ListAppend(lstSameList,idx,strDelimiter)>
</CFIF>
<CFELSE>
<CFIF ListFindNoCase(List2,idx,strDelimiter2)>
<CFSET blnCompared = True>
<CFSET lstSameList = ListAppend(lstSameList,idx,strDelimiter)>
</CFIF>
</CFIF>
</CFLOOP>
<CFIF ReturnSameList>
<CFRETURN lstSameList>
<CFELSE>
<CFRETURN blnCompared>
</CFIF>
</CFFUNCTION>
<!--- ============ END LISTCOMPARE() ============ --->