Sorting Arrays

J. Landman Gay jacque at hyperactivesw.com
Sat Aug 12 12:30:17 EDT 2023


Got it, thanks. The array was numbered but I didn't have enough dimensions.

--
Jacqueline Landman Gay | jacque at hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
On August 11, 2023 7:03:33 PM Alex Tweedly via use-livecode 
<use-livecode at lists.runrev.com> wrote:

> On 11/08/2023 23:00, J. Landman Gay via use-livecode wrote:
>> On 8/10/23 2:29 PM, Alex Tweedly via use-livecode wrote:
>> [ ... code from earlier posting ...]
>
>> I couldn't get this to work until I altered it, but I was using a very
>> simple array. What type of array data did you use? I think I'm missing
>> something.
>>
>> I just did this:
>>
>>   put the weekdayNames into tDataA
>>   split tDataA by cr
>>   simpleSortNumberedArray tDataA, "descending,text"
>>
> What you're missing is that this (simpleSortNumberedArray) is only
> intended for "numbered array"s (which LC is calling "sequences" in some
> places); i.e. an array where the (top-level) keys are all consecutive
> integers, from 1 .... n
>
> Also, the pSortkeys should be a number of comma-separated items, each of
> which consists of a key by which you want to sort the array followed
> optionally by an order and type.
>
> So you might do something like :
>
>> on mouseup
>>    local tCounter, tDataA
>>
>>    repeat for each line L in the weekdayNames
>>       add 1 to tCounter
>>       put L into tDataA[tCounter]["dayname"]
>>       put the number of chars in L into tDataA[tCounter]["charcount"]
>>    end repeat
>>
>>    -- sorts ascending by name (i.e. F, M, Sa, Su, Th, Tu, W)
>>    simpleSortNumberedArray tDataA, "dayname"
>>    repeat with I = 1 to 7
>>       put tDataA[I]["charcount"] && tDataA[I]["dayname"] & CR after msg
>>    end repeat
>>
>>    put "---------" &CR after msg
>>
>>    -- sorts descending numeric by number of characters in name
>>    --  NB within each char count value, they remain in alphabetical
>> order of name
>>    simpleSortNumberedArray tDataA, "charcount numeric descending"
>>    repeat with I = 1 to 7
>>       put tDataA[I]["charcount"] && tDataA[I]["dayname"] & CR after msg
>>    end repeat
>> end mouseup
> and get as output
>
>> 6 Friday
>> 6 Monday
>> 8 Saturday
>> 6 Sunday
>> 8 Thursday
>> 7 Tuesday
>> 9 Wednesday
>> ---------
>> 9 Wednesday
>> 8 Saturday
>> 8 Thursday
>> 7 Tuesday
>> 6 Friday
>> 6 Monday
>> 6 Sunday
>
> So - it would be worth adding a check that the array passed in is indeed
> a sequence, at the start of simpleSortNumberedArray:
>
> if NOT (pArrayDataA is an array AND \
>            item 2 of extents(pArrayDataA) is the number of elements in
> pArrayDataA) then \
>                  return pArrayData
>
> I'm now going to add this to my personal library, but I'll rename it to
>
>     seqSortMultipleKeys
>
> Alex.
>
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode






More information about the use-livecode mailing list