Has anyone come across a need to sort a numbered array by the values of the different keys? Here you go. Keep in mind that there is no error checking so I have no idea what would happen if you provided a sort key that didn’t exist in the array.
on sortNumberedArray @pArrayDataA, pSortKeys /* Provide a numbered array of key value pairs and a comma delimited list of the sort order you want. Ex. "filename,version numeric descending". The result will be numbered array resorted by the sort order you provide. */ put the keys of pArrayDataA into tKeyList sort tKeyList numeric ascending put the number of items of pSortKeys into tSortKeyCount -- convert the sort keys to an array repeat with i = the number of items of pSortKeys down to 1 put item i of pSortKeys into tSortIndex repeat with x = the number of words of tSortIndex down to 1 put word x of tSortIndex into tKeyWord switch case tKeyWord is among the items of "asc,ascending,desc,descending" put tKeyWord into tSortKeysA [i] ["sortorder"] break case tKeyWord is "International,Numeric,datetime,text,binary" put tKeyWord into tSortKeysA [i] ["sorttype"] break default put word 1 to x of tSortIndex into tSortKeysA [i] ["sortvalue"] end switch end repeat end repeat -- build a comma delimited list of sort keys from the passed array put the keys of pArrayDataA into tInputKeyList sort tInputKeyList numeric ascending repeat for each line tLine in tInputKeyList put the keys of tSortKeysA into tSortKeyList sort lines of tSortKeyList numeric repeat for each line tSortLine in tSortKeyList put tSortKeysA [tSortLine] ["sortvalue"] into tSortValue put pArrayDataA [tLine] [tSortValue] into item tSortLine of line tLine of tSortValueList end repeat put "," & tLine after tSortValueList end repeat -- sort the list put the keys of tSortKeysA into tSortKeyList sort tSortKeyList numeric descending repeat for each line tKey in tSortKeyList put "sort lines of tSortValueList" && tSortKeysA [tKey] ["sortorder"] && tSortKeysA [tKey] ["sorttype"] && \ "by item" && tkey && "of each" into tSortCommand do tSortCommand end repeat -- convert the list back to an array repeat for each line tLine in tSortValueList add 1 to tArrayCounter put item -1 of tLine into tArrayIndex put pArrayDataA [tArrayIndex] into tOutArrayA [tArrayCounter] end repeat put tOutArrayA into pArrayDataA end sortNumberedArray Bob S _______________________________________________ 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