All are named TargetPointXY? Well, you can convert the string to a character array (there is a node for this but I don’t know the actual name atm). That character array is a string array where each element contains exactly one character. So in that array at element index 10 you can extract the number by converting it to an integer. In case you have more than 9 TargetPoints you will need to do some extra work with multiplying the element at index 10 with 10 and adding the element at index 11 and so on.
This is obviously a little complicated but blueprints aren’t good in this kind of things. Can’t you add the index to the respective TargetPoint when you create it?
To the sorting part. An easy way to sort an array in blueprints is to create a ForLoop. Plug Array->LastIndex into LastIndex of the ForLoop. In the LoopBody use the node MaxOfIntArray (or MinOfIntArray) on the array with your indices. Add the element of the TargetPoint array at the index the MaxOfIntArray returns to a new array of TargetPoints. Afterwards in the LoopBody remove the elements of the old TargetPoints array and the old Indices array at that index. The result is a new array with sorted TargetPoints.
This is a super easy sorting algorithm but how many elements does your array have and how often are you sorting it? You shouldn’t use such an algorithm when sorting many elements frequently.