I have two large arrays. One is an array (call it Array1) of 100,000 PSCustomObjects, each of which has a property called "Token". And the other array is simply an array of strings, the size of this second array being 2500 elements.

The challenge is that EVERY element of Array1 needs to be checked against all the elements in Array2 and tagged accordingly. i.e., if the the Token value from Array1 matches any of the elements from Array2, label it as "Match found!"

Looping through would actually make it extremely slow. Is there a better way to do this?
P.S.: The items in Array1 have an ordinal number property as well, and the array is sorted in that order.

Here is the code:

```
  $Array1 = @()    
  $Array2 = @()

  #Sample object:
  $obj = New-Object -TypeName PSCustomObject    
  $obj | Add-Member -MemberType NoteProperty -Name Token           -Value "SOMEVALUEHERE"   
  $obj | Add-Member -MemberType NoteProperty -Name TokenOrdinalNum -Value 1

  $Array1 += $obj  # This array has 100K such objects 

  $Array2 = @("VAL1", "SOMEVALUEHERE", ......) #Array2 has 2500 such strings.

```

The output of this would need to be a new array of objects, say 'ArrayFinal', that has an additional noteproperty called 'MatchFound'.

Please help.