sort: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Update x4 to use `apply`)
m (template:command argument fix)
Line 12: Line 12:
* [[Number]] - array of numbers ([1,2,3...])
* [[Number]] - array of numbers ([1,2,3...])
* [[Array]] - array of subarrays (<nowiki>[</nowiki>["a",1,2],["b",3,4],["c",5,6]...]). Subarrays should be of the same structure. Subarray elements other than [[String]] or [[Number]] will be ignored during sorting.
* [[Array]] - array of subarrays (<nowiki>[</nowiki>["a",1,2],["b",3,4],["c",5,6]...]). Subarrays should be of the same structure. Subarray elements other than [[String]] or [[Number]] will be ignored during sorting.
Mixed arrays (["a",1,[true]...]) are not supported and results are undefined. |= Description
Mixed arrays (["a",1,[true]...]) are not supported and results are undefined. |DESCRIPTION=
____________________________________________________________________________________________
____________________________________________________________________________________________


| array '''sort''' order|= Syntax
| array '''sort''' order|SYNTAX=


|p1= array: [[Array]] |= Parameter 1
|p1= array: [[Array]] |PARAMETER1=


|p2= order: [[Boolean]] - [[true]]: ascending, [[false]]: descending |= Parameter 2
|p2= order: [[Boolean]] - [[true]]: ascending, [[false]]: descending |PARAMETER2=


| [[Nothing]] |= Return value
| [[Nothing]] |RETURNVALUE=
____________________________________________________________________________________________
____________________________________________________________________________________________
   
   
|x1= <code>_arr = [5.21725,1.30859,4,5.03028,1];
|x1= <code>_arr = [5.21725,1.30859,4,5.03028,1];
_arr [[sort]] [[true]];
_arr [[sort]] [[true]];
[[hint]] [[str]] _arr; //[1,1.30859,4,5.03028,5.21725]</code> |= Example 1
[[hint]] [[str]] _arr; //[1,1.30859,4,5.03028,5.21725]</code> |EXAMPLE1=


|x2= <code>_dev = ["ja","pa","pa","tram","tara"];
|x2= <code>_dev = ["ja","pa","pa","tram","tara"];
_dev [[sort]] [[false]];
_dev [[sort]] [[false]];
[[hint]] [[str]] _dev; //["tram","tara","pa","pa","ja"]</code> |= Example 2
[[hint]] [[str]] _dev; //["tram","tara","pa","pa","ja"]</code> |EXAMPLE2=


|x3= <code><nowiki>#</nowiki>define ASC true
|x3= <code><nowiki>#</nowiki>define ASC true
Line 36: Line 36:
_scores = <nowiki>[</nowiki>[123,"bob",15],[123,"bill",20],[200,"dave",21],[200,"steve",11]];
_scores = <nowiki>[</nowiki>[123,"bob",15],[123,"bill",20],[200,"dave",21],[200,"steve",11]];
_scores [[sort]] DESC;
_scores [[sort]] DESC;
[[hint]] [[str]] _scores; //<nowiki>[</nowiki>[200,"steve",11],[200,"dave",21],[123,"bob",15],[123,"bill",20]]</code> |= Example 2
[[hint]] [[str]] _scores; //<nowiki>[</nowiki>[200,"steve",11],[200,"dave",21],[123,"bob",15],[123,"bill",20]]</code> |EXAMPLE2=




Line 46: Line 46:
[[getPos]] (_buildings [[select]] 0 [[select]] 1),
[[getPos]] (_buildings [[select]] 0 [[select]] 1),
[[round]] (_buildings [[select]] 0 [[select]] 0)
[[round]] (_buildings [[select]] 0 [[select]] 0)
];</code>|= Example 4
];</code>|EXAMPLE4=


____________________________________________________________________________________________
____________________________________________________________________________________________


| [[set]], [[pushBack]], [[pushBackUnique]], [[apply]], [[select]], [[resize]], [[reverse]], [[count]], [[find]], [[in]], [[forEach]], [[deleteAt]], [[deleteRange]], [[append]], [[toArray]], [[toString]], [[param]], [[params]], [[arrayIntersect]], [[splitString]], [[joinString]], [[BIS_fnc_sortAlphabetically]], [[BIS_fnc_sortBy]], [[BIS_fnc_sortNum]] |= See also
| [[set]], [[pushBack]], [[pushBackUnique]], [[apply]], [[select]], [[resize]], [[reverse]], [[count]], [[find]], [[in]], [[forEach]], [[deleteAt]], [[deleteRange]], [[append]], [[toArray]], [[toString]], [[param]], [[params]], [[arrayIntersect]], [[splitString]], [[joinString]], [[BIS_fnc_sortAlphabetically]], [[BIS_fnc_sortBy]], [[BIS_fnc_sortNum]] |SEEALSO=


}}
}}

Revision as of 15:49, 7 April 2019

Hover & click on the images for description

Description

Description:
Attempts to sort given array either in ascending (true) or descending (false) order. All array elements should be one of the following types:
  • String - array of strings (["a","b","c"...])
  • Number - array of numbers ([1,2,3...])
  • Array - array of subarrays ([["a",1,2],["b",3,4],["c",5,6]...]). Subarrays should be of the same structure. Subarray elements other than String or Number will be ignored during sorting.
Mixed arrays (["a",1,[true]...]) are not supported and results are undefined.
Groups:
Uncategorised

Syntax

Syntax:
array sort order
Parameters:
array: Array
order: Boolean - true: ascending, false: descending
Return Value:
Nothing

Examples

Example 1:
_arr = [5.21725,1.30859,4,5.03028,1]; _arr sort true; hint str _arr; //[1,1.30859,4,5.03028,5.21725]
Example 2:
_dev = ["ja","pa","pa","tram","tara"]; _dev sort false; hint str _dev; //["tram","tara","pa","pa","ja"]
Example 3:
#define ASC true #define DESC false _scores = [[123,"bob",15],[123,"bill",20],[200,"dave",21],[200,"steve",11]]; _scores sort DESC; hint str _scores; //[[200,"steve",11],[200,"dave",21],[123,"bob",15],[123,"bill",20]]
Example 4:
Sort buildings by distance and return position of the most distant building:_buildings = player nearObjects ["Land_Cargo_Patrol_V1_F", 500]; _buildings = _buildings apply { [_x distance player, _x] }; _buildings sort false; hint format [ "Most distant building is at %1, distance %2 m", getPos (_buildings select 0 select 1), round (_buildings select 0 select 0) ];

Additional Information

See also:
setpushBackpushBackUniqueapplyselectresizereversecountfindinforEachdeleteAtdeleteRangeappendtoArraytoStringparamparamsarrayIntersectsplitStringjoinStringBIS_fnc_sortAlphabeticallyBIS_fnc_sortByBIS_fnc_sortNum

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Posted on April 16, 2015 - 18:14 (UTC)
Killzone Kid
The algorithm for sorting subarrays: compare 1st element, if equal compare 2nd, if equal compare 3rd...etc.