Difference between revisions of "Sort"

From MiniScript Wiki
Jump to navigation Jump to search
(Added documentation for 'ascending' parameter and an example of sorting in descending order.)
m
 
(One intermediate revision by one other user not shown)
Line 7: Line 7:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Parameter Name !! Default Value !! Meaning
+
! Parameter Name !! Type !! Meaning
 
|-
 
|-
 
| ''self'' || list || list to sort
 
| ''self'' || list || list to sort
 
|-
 
|-
| ''byKey'' || optional || if given, sort each element by indexing with this key.
+
| ''byKey'' || any || if given, sort each element by indexing with this key.
 
|-
 
|-
| ''ascending'' || number, default = 1 || pass 0 or false to sort in descending order.  
+
| ''ascending'' || number, default = 1 || pass 0 or <c>false</c> to sort in descending order.  
 
|}
 
|}
  
Line 34: Line 34:
 
<ms>
 
<ms>
 
b = [1,3,0,8,7]  
 
b = [1,3,0,8,7]  
b.sort(null, false) // results in b == [8, 7, 3, 1, 0]</ms>
+
b.sort null, false  // results in b == [8, 7, 3, 1, 0]</ms>
  
 
Sorting objects / maps by some property:
 
Sorting objects / maps by some property:
Line 61: Line 61:
 
[[Category:Intrinsic Functions]]
 
[[Category:Intrinsic Functions]]
 
[[Category:List Methods]]
 
[[Category:List Methods]]
[[User:PureFox48|PureFox48]] ([[User talk:PureFox48|talk]]) 13:35, 14 June 2026 (UTC)
 

Latest revision as of 16:55, 14 June 2026

sort sorts a list in place. With null or no argument, this sorts the list elements by their own values.

See also: shuffle

Arguments

Parameter Name Type Meaning
self list list to sort
byKey any if given, sort each element by indexing with this key.
ascending number, default = 1 pass 0 or false to sort in descending order.

Usage Notes

With the byKey argument, each element is indexed by that argument, and the elements are sorted by the result. (This only works if the list elements are maps, or they are lists and byKey is an integer index.)

Example

Sorting numeric list in-place:

a = [5,3,4,1,2]
a.sort	        // results in a == [1, 2, 3, 4, 5]

Sorting in reverse order:

b = [1,3,0,8,7] 
b.sort null, false  // results in b == [8, 7, 3, 1, 0]

Sorting objects / maps by some property:

// Let's consider people
Person = {}

newPerson = function(name, age)
  p = new Person
  p.name = name
  p.age = age
  return p
end function

john = newPerson("John", 30)
ursula = newPerson("Ursula", 20)
anna = newPerson("Anna", 40)

people = [john, ursula, anna]

people.sort "age"    // results in people == [ursula, john, anna]
people.sort "name"   // results in people == [anna, john, ursula]