mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-01-17 14:18:13 +01:00
1.5 KiB
1.5 KiB
sort
Sorts the elements of a list in ascending order. The list is a list-of-list construct, such as [[a0, a1, a2...], [b0, b1, b2,...], [c0, c1, c2,...],...]
. When sorting, the function looks only at one index position of each sublist.
Since: 2.0
Parameters
lt
: The original list.by
: Can be"x"
、"y"
、"z"
, or"idx"
(Default)."vt"
. From dotSCAD 2.3, whenby
is"vt"
, it will sort points by zyx (from the last index to the first one). From dotSCAD 3.0,by
supports a function literal that compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.idx
: Whenby
is"idx"
, the value ofidx
is used. The Default value is 0.
Examples
use <util/sort.scad>;
assert(
[[2, 0, 0], [5, 0, 0], [7, 0, 0], [9, 0, 0], [10, 0, 0]] ==
sort([[10, 0, 0], [5, 0, 0], [7, 0, 0], [2, 0, 0], [9, 0, 0]])
);
assert(
[[2, 0, 0], [5, 0, 0], [7, 0, 0], [9, 0, 0], [10, 0, 0]] ==
sort([[10, 0, 0], [5, 0, 0], [7, 0, 0], [2, 0, 0], [9, 0, 0]], by = "x")
);
assert(
[[0, 2, 0], [0, 5, 0], [0, 7, 0], [0, 9, 0], [0, 10, 0]] ==
sort([[0, 10, 0], [0, 5, 0], [0, 7, 0], [0, 2, 0], [0, 9, 0]], by = "idx", idx = 1)
);
ascending = function(e1, e2) e1 - e2;
descending = function(e1, e2) e2 - e1;
assert(sort([2, 1, 3, 5, 4], by = ascending) == [1, 2, 3, 4, 5]);
assert(sort([2, 1, 3, 5, 4], by = descending) == [5, 4, 3, 2, 1]);