> On Mar 13, 2022, at 1:05 PM, J. Landman Gay via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> On 3/12/22 8:54 PM, Roger Guay via use-livecode wrote:
>> I have a field with about a thousand lines with many duplicate lines, and I 
>> want to delete the duplicates. Seems like this should be simple but I am 
>> running around in circles. Can anyone help me with this?
> 
> Making the list into an array is the easiest way but as mentioned, it will 
> destroy the original order. If the order is important then you can restore it 
> with a custom sort function...
> 


Since order must be maintained, it’s probably faster not to split and sort, and 
faster not to scan the list repeatedly using lineOffset or contains.
You could do it like this:

command removeDuplicates pDelimitedList, pDelimiter
   local tArray, tList
   set the lineDelimiter to pDelimiter
   repeat for each line tLine in pDelimitedList
      if not tArray[tLine] then -- i.e., if this line hasn't appeared already, 
then ...
         put true into tArray[tLine]
         put tLine & pDelimiter after tList
      end if
   end repeat
   delete last char of tList
   return tList for value
end removeDuplicates

— Dick
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to