Platinum Partner
java,coldfusion

Comparing two Objects

I recently wanted to compare two objects to see if they were the same. After looking through the cfml ref I couldn't find anything, but I did find that you can use ArrayFind to do it.

Here's a quick test I wrote:

Foo.cfc

component 
{ 
  this.uuid = CreateUUID(); 
}

test.cfm

<cfset foo = new foo()>
<cfset bar = new foo()>
<cfoutput>

is foo equal to foo? #ArrayFind( [foo], foo ) gt 0#<br />
is foo equal to bar? #ArrayFind( [foo], bar ) gt 0#<br />
</cfoutput>

The output when I run this script is:

is foo equal to foo? YES

is foo equal to bar? NO

It also works with persistent entities, this is a test I wrote using the cfcodeexplorer datasource:

<cfset NewArtist = EntityNew( "Artist" )>
<cfset Artist = EntityLoadByPK( "Artist", 1 )>
<cfset Artist2 = EntityLoadByPK( "Artist", 1 )>

<cfset foo = new foo()>

<cfoutput>
is Artist equal to Artist? #ArrayFind( [Artist], Artist ) gt 0#<br />
is NewArtist equal to Artist? #ArrayFind( [NewArtist], Artist ) gt 0#<br />
is Artist equal to Artist2? #ArrayFind( [Artist], Artist2 ) gt 0#<br />
is foo equal to Artist? #ArrayFind( [foo], Artist ) gt 0#
</cfoutput>

The output when I run this script is:

is Artist equal to Artist? YES
is NewArtist equal to Artist? NO
is Artist equal to Artist2? YES
is foo equal to Artist? NO

Published at DZone with permission of {{ articles[0].authors[0].realName }}, DZone MVB. (source)

Opinions expressed by DZone contributors are their own.

{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks
Tweet

{{parent.nComments}}