ARRAY::SORT 1g 2023-11-22 laplante@plcb.ca GOWEB/ARRAY


title: “ARRAY::SORT” version: “1g” date: 2023-11-22 author: “laplante@plcb.ca”

category: “GOWEB/ARRAY”

Name

array::sort Sort an Array

Synopsis

array::sort(array[, less:f, sortby: "string" | "float" | "integer" | "func"])
sort(array[, less:f, sortby: "string" | "float" | "integer" | "func"])

Description

Sorts the elements of an array according to the specified sortby mode.

When sortby is "func", you must also provide:


Examples

Custom numeric sort using a comparison function

res={{
    func compare(a,b) {
        return a < b;
    }

    a := [5,9,2,4,6,3,3,6,1,-1,0];
    sort(a, sortby:"func", less:compare);
    a;
}}.

Returns:

res=[-1,0,1,2,3,3,4,5,6,6,9]

Sorting an array of objects by different fields

res={{
    func by_firstname(a,b) {
        return a.firstname < b.firstname;
    }
    func by_lastname(a,b) {
        return a.lastname < b.lastname;
    }

    a := [
        { "firstname" : "a", "lastname" : "z" },
        { "firstname" : "z", "lastname" : "a" },
        { "firstname" : "p", "lastname" : "p" }
    ];

    sort(a, sortby:"func", less:by_firstname);
    "\n"; a; "\n";
    sort(a, sortby:"func", less:by_lastname);
    a;
}}.

Returns:

[{"firstname":"a","lastname":"z"},{"firstname":"p","lastname":"p"},{"firstname":"z","lastname":"a"}]
[{"firstname":"z","lastname":"a"},{"firstname":"p","lastname":"p"},{"firstname":"a","lastname":"z"}]

Integer sort

res={{
    a := [5,9,2,4,6,3,3,6,1,-1,0];
    sort(a, sortby:"integer");
    a;
}}.

Returns:

res=[-1,0,1,2,3,3,4,5,6,6,9]

Author

laplante@plcb.ca


See also


Version