forEachReversed: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "(\|[pr][0-9]+ *= *[^- ]*) *- *T([a-z ])" to "$1 - t$2")
m (Text replacement - "(\|[pr][0-9]+ *= *[^- ]*) *- *W([a-z ])" to "$1 - w$2")
Line 17: Line 17:
|p2= array: [[Array]] - the array to iterate over
|p2= array: [[Array]] - the array to iterate over


|r1= [[Anything]] - Will return the value of last executed statement
|r1= [[Anything]] - will return the value of last executed statement


|x1= This command lets you easily iterate through an array from last to first element without modifying the array itself with [[reverse]] or using [[for]] loop with negative [[step]].
|x1= This command lets you easily iterate through an array from last to first element without modifying the array itself with [[reverse]] or using [[for]] loop with negative [[step]].

Revision as of 16:35, 8 November 2023

Hover & click on the images for description

Description

Description:
Executes the given command(s) on every item of an Array in reversed order, compared to forEach.
Groups:
Program FlowArrays

Syntax

Syntax:
code forEachReversed array
Parameters:
code: Code to execute on each array item - available variables:
array: Array - the array to iterate over
Return Value:
Anything - will return the value of last executed statement

Examples

Example 1:
This command lets you easily iterate through an array from last to first element without modifying the array itself with reverse or using for loop with negative step.
// Will show numbers from 5 to 1 in the chat { systemChat str _x } forEachReversed [1,2,3,4,5];
Example 2:
Can be useful to walk through array while also deleting items from it, which you couldn't do with forEach as easily:
private _array = [1,1,2,2,1,1,2,2]; { if (_x == 2) then { _array deleteAt _forEachIndex }; } forEachReversed _array; // _array will be [1,1,1,1] here
Won't work with forEach as you might expect it:
private _array = [1,1,2,2,1,1,2,2]; { if (_x == 2) then { _array deleteAt _forEachIndex }; } forEach _array; // _array will be [1,1,2,1,1,2] here
Example 3:
Deleting items from array with more complex condition than just comparison.
{ if (!alive _x) then { _vehicles deleteAt _forEachIndex }; } forEachReversed _vehicles;

Additional Information

See also:
Control Structures forEach for apply while select findIf count deleteAt reverse

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