Skip to main content
Inspiring
January 29, 2018
Answered

fillcolor boolean discrepancy

  • January 29, 2018
  • 3 replies
  • 727 views

Hey everyone,

Could someone explain the below (console) behavior for me? ( Nb. f1. is a text field that is gray.)

f1.fillColor==color.gray

false

f1.fillColor

G,0.5

color.gray

G,0.5

I'd like to use the background color for booleans , but because the top comparison fails I'm at a loss.

For this particular instance I have a workaround but for my overall understanding I'd be happy to know why this works this way

This topic has been closed for replies.
Correct answer try67

Color objects are actually an array, and arrays can't be compared to each other directly in JS.

So this code will return false:

[1]  == [1]

The solution is to use the built-in equal method of the color object.

For example, this will return true:

color.equal(color.red, ["RGB", 1, 0, 0])

3 replies

Inspiring
February 5, 2018

Thank you, good to know!

Bernd Alheit
Community Expert
Community Expert
January 29, 2018

You can use this:

f1.fillColor.join('|') == color.gray.join('|')

try67
Community Expert
Community Expert
January 29, 2018

Why would you want to do that if you have a perfectly good built-in comparison method, that even converts the two values to the same color-space, if needed?
For example, this returns true:

color.equal(["RGB",1,1,0], ["CMYK",0,0,1,0])

This returns false:

["RGB",1,1,0].join('|') == ["CMYK",0,0,1,0].join('|')

Bernd Alheit
Community Expert
Community Expert
January 29, 2018

I have only found the join solution.

try67
Community Expert
try67Community ExpertCorrect answer
Community Expert
January 29, 2018

Color objects are actually an array, and arrays can't be compared to each other directly in JS.

So this code will return false:

[1]  == [1]

The solution is to use the built-in equal method of the color object.

For example, this will return true:

color.equal(color.red, ["RGB", 1, 0, 0])