Array
A generic array datatype.
Description
A generic array that can contain several elements of any type, accessible by a numerical index starting at 0. Negative indices can be used to count from the back, like in Python (-1 is the last element, -2 is the second to last, etc.). Example:
var array = ["One", 2, 3, "Four"]print(array[0]) # One.print(array[2]) # 3.print(array[-1]) # Four.array[2] = "Three"print(array[-2]) # Three.
+ operator:
var array1 = ["One", 2]var array2 = [3, "Four"]print(array1 + array2) # ["One", 2, 3, "Four"]
Note: Concatenating with the += operator will create a new array, which has a cost. If you want to append another array to an existing array, append_array is more efficient.
Note: Arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use duplicate.
Note: When declaring an array with const, the array itself can still be mutated by defining the values at individual indices or pushing/removing elements. Using const will only prevent assigning the constant with another value after it was initialized.
Methods
Method Descriptions
- Array Array ( PoolColorArray from ) PoolColorArray.
- Array Array ( PoolVector3Array from ) PoolVector3Array.
- Array Array ( PoolVector2Array from ) PoolVector2Array.
- Array Array ( PoolStringArray from ) PoolStringArray.
- Array Array ( PoolRealArray from ) PoolRealArray.
- Array Array ( PoolIntArray from ) PoolIntArray.
- Array Array ( PoolByteArray from ) PoolByteArray.
- append ( Variant value ) push_back).
- append_array ( Array array )
Appends another array at the end of this array.
var array1 = [1, 2, 3]var array2 = [4, 5, 6]array1.append_array(array2)print(array1) # Prints [1, 2, 3, 4, 5, 6].
- Variant back ( )
nullif the array is empty. Note: Calling this function is not the same as writingarray[-1]. If the array is empty, accessing by index will pause project execution when running from the editor.
- int bsearch ( Variant value, bool before=true )
beforespecifier can be passed. Iffalse, the returned index comes after all existing entries of the value in the array. Note: Calling bsearch on an unsorted array results in unexpected behavior.
- int bsearch_custom ( Variant value, Object obj, String func, bool before=true )
obj. Optionally, abeforespecifier can be passed. Iffalse, the returned index comes after all existing entries of the value in the array. The custom method receives two arguments (an element from the array and the value searched for) and must returntrueif the first argument is less than the second, and returnfalseotherwise.
Note: Calling bsearch_custom on an unsorted array results in unexpected behavior.func cardinal_to_algebraic(a): match a: "one": return 1 "two": return 2 "three": return 3 "four": return 4 _: return 0func compare(a, b): return cardinal_to_algebraic(a) < cardinal_to_algebraic(b)func _ready(): var a = ["one", "two", "three", "four"] # `compare` is defined in this object, so we use `self` as the `obj` parameter. print(a.bsearch_custom("three", self, "compare", true)) # Expected value is 2.
- clear ( )
resize with a size of
0.
- int count ( Variant value ) Returns the number of times an element is in the array.
- Array duplicate ( bool deep=false )
Returns a copy of the array.
deepistrue, a deep copy is performed: all nested arrays and dictionaries are duplicated and will not be shared with the original array. Iffalse, a shallow copy is made and references to the original nested arrays and dictionaries are kept, so that modifying a sub-array or dictionary in the copy will also impact those referenced in the source array.
- bool empty ( )
trueif the array is empty.
- erase ( Variant value ) remove instead. Note: This method acts in-place and doesn’t return a value. Note: On large arrays, this method will be slower if the removed element is close to the beginning of the array (index 0). This is because all elements placed after the removed element have to be reindexed.
- fill ( Variant value )
resize to create an array with a given size and initialized elements:
var array = []array.resize(10)array.fill(0) # Initialize the 10 elements to 0.
- int find ( Variant what, int from=0 )
-1if not found. Optionally, the initial search index can be passed. Returns-1iffromis out of bounds.
- int find_last ( Variant value )
-1if not found.
- Variant front ( )
nullif the array is empty. Note: Calling this function is not the same as writingarray[0]. If the array is empty, accessing by index will pause project execution when running from the editor.
- bool has ( Variant value )
trueif the array contains the given value.
Note: This is equivalent to using the["inside", 7].has("inside") # True["inside", 7].has("outside") # False["inside", 7].has(7) # True["inside", 7].has("7") # False
inoperator as follows:# Will evaluate to `true`.if 2 in [2, 4, 6, 8]: pass
- int hash ( )
Returns a hashed 32-bit integer value representing the array and its contents.
Note:
Arrays with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does not imply the arrays are equal, because different arrays can have identical hash values due to hash collisions.
- insert ( int position, Variant value )
pos == size()). Note: This method acts in-place and doesn’t return a value. Note: On large arrays, this method will be slower if the inserted element is close to the beginning of the array (index 0). This is because all elements placed after the newly inserted element have to be reindexed.
- invert ( ) Reverses the order of the elements in the array.
- Variant max ( )
nullis returned.
- Variant min ( )
nullis returned.
- Variant pop_at ( int position )
position. If negative,positionis considered relative to the end of the array. Leaves the array untouched and returnsnullif the array is empty or if it’s accessed out of bounds. An error message is printed when the array is accessed out of bounds, but not when the array is empty. Note: On large arrays, this method can be slower than pop_back as it will reindex the array’s elements that are located after the removed element. The larger the array and the lower the index of the removed element, the slower pop_at will be.
- Variant pop_back ( )
nullif the array is empty, without printing an error message. See also pop_front.
- Variant pop_front ( )
nullif the array is empty, without printing an error message. See also pop_back. Note: On large arrays, this method is much slower than pop_back as it will reindex all the array’s elements every time it’s called. The larger the array, the slower pop_front will be.
- push_back ( Variant value ) push_front.
- push_front ( Variant value ) push_back. Note: On large arrays, this method is much slower than push_back as it will reindex all the array’s elements every time it’s called. The larger the array, the slower push_front will be.
- remove ( int position ) erase instead. Note: This method acts in-place and doesn’t return a value. Note: On large arrays, this method will be slower if the removed element is close to the beginning of the array (index 0). This is because all elements placed after the removed element have to be reindexed.
- resize ( int size )
null.
- int rfind ( Variant what, int from=-1 ) Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. If the adjusted start index is out of bounds, this method searches from the end of the array.
- shuffle ( ) @GDScript.randi. Call @GDScript.randomize to ensure that a new seed will be used each time if you want non-reproducible shuffling.
- int size ( ) Returns the number of elements in the array.
- Array slice ( int begin, int end, int step=1, bool deep=false )
deepistrue. Lower and upper index are inclusive, with thestepdescribing the change between indices while slicing.
- sort ( )
Sorts the array.
Note: Strings are sorted in alphabetical order (as opposed to natural order). This may lead to unexpected behavior when sorting an array of strings ending with a sequence of numbers. Consider the following example:
var strings = ["string1", "string2", "string10", "string11"]strings.sort()print(strings) # Prints [string1, string10, string11, string2]
- sort_custom ( Object obj, String func )
trueorfalse.aandb, if the given method returnstrue, elementbwill be after elementain the array. Note: You cannot randomize the return value as the heapsort algorithm expects a deterministic result. Doing so will result in unexpected behavior.class MyCustomSorter: static func sort_ascending(a, b): if a[0] < b[0]: return true return falsevar my_items = [[5, "Potato"], [9, "Rice"], [4, "Tomato"]]my_items.sort_custom(MyCustomSorter, "sort_ascending")print(my_items) # Prints [[4, Tomato], [5, Potato], [9, Rice]].
