apply: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "</dd> </dl>" to "</dd> </dl>")
m (Text replacement - "(\|[pr][0-9]+ *= *[^-]+) *- *C([a-eg-z])" to "$1 - c$2")
 
(16 intermediate revisions by 2 users not shown)
Line 2: Line 2:


|game1= arma3
|game1= arma3
|version1= 1.56
|version1= 1.56


|gr1= Arrays
|gr1= Arrays
|gr2= HashMap


|descr= Applies given code to each element of the array and returns resulting array. The value of the current array element, to which the code will be applied, is stored in variable [[Magic Variables#x|_x]].
|descr= Applies the given code to each element of the given data structure and collects the results in an array.


|s1= array [[apply]] code
|s1= array [[apply]] code


|p1= array: [[Array]] - Array of [[Anything]]
|p1= array: [[Array]] - array of [[Anything]]


|p2= code: [[Code]] - Code to be executed on each element of the array. Current element value is stored in variable [[Magic Variables#x|_x]]
|p2= code: [[Code]] - code to be executed on each element of the array. The current element value is stored in the magic variable [[Magic Variables#x|_x]].


|r1= [[Array]] - Resulting array
|r1= [[Array]] - resulting array


|s2= hashmap [[apply]] code
|s2= hashmap [[apply]] code
 
|s2since= arma3 2.04


|p21= hashmap: [[HashMap]]
|p21= hashmap: [[HashMap]]


|p22= code: [[Code]] - Code to be executed on each element of the hashmap. Current key is stored in variable [[Magic Variables#x|_x]], and the value is stored in variable [[Magic Variables#y|_y]]
|p22= code: [[Code]] - code to be executed on each key-value pair of the hashmap. The current key is stored in the magic variable [[Magic Variables#x|_x]], the corresponding value is stored in [[Magic Variables#y|_y]].


|r2= [[Array]] - Resulting array
|r2= [[Array]] - resulting array


|x1= <code>_arr = [1,2,3,4,5,6,7,8,9,0] [[apply]] {[1,0] [[select]] (_x % 2 == 0)}; //[1,0,1,0,1,0,1,0,1,0]</code>
|x1= <sqf>private _arr = [1,2,3,4,5,6,7,8,9,0] apply { [1,0] select (_x % 2 == 0) }; // [1,0,1,0,1,0,1,0,1,0]</sqf>


|x2= <code>_arr = [1,2,3,4,5,6,7,8,9,0] [[apply]] {_x ^ _x}; //[1,4,27,256,3125,46656,823543,16777216,387420480,1]</code>
|x2= <sqf>private _arr = [1,2,3,4,5,6,7,8,9,0] apply { _x ^ _x }; // [1,4,27,256,3125,46656,823543,16777216,387420480,1]</sqf>


|x3= <code>_arr1 = [];
|x3= <sqf>
_arr1 [[resize]] 20;
private _arr1 = [];
_arr2 = _arr1 [[apply]] {0}; //[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]</code>
_arr1 resize 20;
_arr2 = _arr1 apply { 0 }; // [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
</sqf>


|x4= <code>[0,1,2,3,4] [[apply]] {[[str]] _x}; {{cc|Returns ["0","1","2","3","4"]}}</code>
|x4= <sqf>[0,1,2,3,4] apply { str _x }; // ["0","1","2","3","4"]</sqf>


|x5= <code>_hashmap = [[createHashMapFromArray]] <nowiki>[["key", "value"]]</nowiki>;
|x5= <sqf>
_array = _hashmap [[apply]] {_y}; //["value"]</code>
private _hashmap = createHashMapFromArray [["Key 1", "Value 1"], ["Key 2", "Value 2"]];
private _array = _hashmap apply { _y + " Test" }; // ["Value 2 Test","Value 1 Test"]
</sqf>


|seealso= [[set]], [[resize]], [[pushBack]], [[pushBackUnique]], [[select]], [[reverse]], [[count]], [[find]], [[in]], [[forEach]], [[deleteAt]], [[deleteRange]], [[append]], [[sort]], [[arrayIntersect]]
|seealso= [[set]] [[resize]] [[pushBack]] [[pushBackUnique]] [[select]] [[reverse]] [[count]] [[find]] [[in]] [[forEach]] [[deleteAt]] [[deleteRange]] [[append]] [[sort]] [[arrayIntersect]]
}}
}}


<dl class="command_description">
{{Note
|user= Fusselwurm
|timestamp= 20160218110300
|text= (to anyone else wondering, I took a minute to get it) this is {{Link|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map|Array.map()}} in JavaScript
}}


<dt></dt>
{{Note
<dd class="notedate">Posted on February 18, 2016 - 11:03 (UTC)</dd>
|user= Lou Montana
<dt class="note">[[User:Fusselwurm|Fusselwurm]]</dt>
|timestamp= 20180211230200
<dd class="note">
|text= if performance really is an issue, [[apply]] seems to be (very) slightly faster than [[forEach]] (by more or less one percent, 0.7-1.5% in my tests to be precise).
(to anyone else wondering, I took a minute to get it): This is Array.map() in JavaScript
}}
</dd>
 
<dt><dt>
<dd class="notedate">Posted on February 11, 2018 - 23:02 (UTC)</dd>
<dt class="note">[[User:Lou Montana|Lou Montana]]</dt>
<dd class="note">
if performance really is an issue, [[apply]] seems to be (very) slightly faster than [[forEach]] (by more or less one percent, 0.7-1.5% in my tests to be precise).
</dd>
 
</dl>

Latest revision as of 14:00, 8 November 2023

Hover & click on the images for description

Description

Description:
Applies the given code to each element of the given data structure and collects the results in an array.
Groups:
ArraysHashMap

Syntax

Syntax:
array apply code
Parameters:
array: Array - array of Anything
code: Code - code to be executed on each element of the array. The current element value is stored in the magic variable _x.
Return Value:
Array - resulting array

Alternative Syntax

Syntax:
hashmap apply code
Parameters:
hashmap: HashMap
code: Code - code to be executed on each key-value pair of the hashmap. The current key is stored in the magic variable _x, the corresponding value is stored in _y.
Return Value:
Array - resulting array

Examples

Example 1:
private _arr = [1,2,3,4,5,6,7,8,9,0] apply { [1,0] select (_x % 2 == 0) }; // [1,0,1,0,1,0,1,0,1,0]
Example 2:
private _arr = [1,2,3,4,5,6,7,8,9,0] apply { _x ^ _x }; // [1,4,27,256,3125,46656,823543,16777216,387420480,1]
Example 3:
private _arr1 = []; _arr1 resize 20; _arr2 = _arr1 apply { 0 }; // [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Example 4:
[0,1,2,3,4] apply { str _x }; // ["0","1","2","3","4"]
Example 5:
private _hashmap = createHashMapFromArray [["Key 1", "Value 1"], ["Key 2", "Value 2"]]; private _array = _hashmap apply { _y + " Test" }; // ["Value 2 Test","Value 1 Test"]

Additional Information

See also:
set resize pushBack pushBackUnique select reverse count find in forEach deleteAt deleteRange append sort arrayIntersect

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
Fusselwurm - c
Posted on Feb 18, 2016 - 11:03 (UTC)
(to anyone else wondering, I took a minute to get it) this is Array.map() in JavaScript
Lou Montana - c
Posted on Feb 11, 2018 - 23:02 (UTC)
if performance really is an issue, apply seems to be (very) slightly faster than forEach (by more or less one percent, 0.7-1.5% in my tests to be precise).