Array Unique value

Sunday challenge.

How can I create an ARRAY with unique value. In other langage I will use a SET. Of course I already have some solution but I’m looking for an elegant’s one (we are Sunday)

I’d use a dictionary. You can iterate over the entries when you need to.


some of your solution is to use the Extends method.

For concrete example imagine an array of color with unique colors

// Pseudo Code

Var colors() As Color


Will produce this


I expect to have 3 colors in my colors array : black red blue because the colors.Add(Color.Black) will not add the existing black color.

@MarkusR is it possible to Extends array add method ? may be by creating a Set class withe super Class has Array ?

An other application of a Set of unique value in array is retrieving letters in a string with Split

For ex. “dana brown”.Split return [“d”,“a”,“n”,“a”," “,“b”,“r”,“o”,“w”,“n”] with Set it would return [“d”,“a”,“n”,” ", “b”,“r”,“o”,“w”]

Hello @Dana_Brown :wink:

Sub Pressed() Handles Pressed
  Var colors() As Color
  Call colors.AddUnique(Color.Black)
  Call colors.AddUnique(Color.Red)
  Call colors.AddUnique(Color.Blue)
  Call colors.AddUnique(Color.Black)
End Sub

Global Method in a Module
this Extends is a nice feature in Xojo.

Public Function AddUnique(Extends allColors() As Color, newColor As Color) As Boolean
  For Each col As Color In allColors
    If col = newColor Then Return False
  Call allColors.Add(newColor)
  Return True
End Function

may be by creating a Set class withe super Class has Array

you can not use Array as Super in your new Class.
but you can have a array in your class, sure.

1 Like