Core Function IndexOfValue
IndexOfValue( <array>, <needle>, <strict>, <ignoreCase>, <skipStringKeys> )
Contents |
Description
Checks if a value exists in an array and returns its index value.
Parameters
array
The array to use.
needle
The searched value.
Note:
If needle is a string, the comparison is done in a case-sensitive manner.
(Unless the flag is set to ignore case)
You can set the needle to a Regex such as "m/\d+/" (without quotes) to search for Regexp patterns.
strict
Optional; If true the the array value and the needle must be same TYPE such as both Int32s.
Note - If "strict" is true when the needle is a Regex then it will require all the values to be STRING or else it will not match.
Default: false
ignoreCase
Optional; Flag to choose if the search will be case sensitive or case insensitive
True: Ignore case and match with case insensitivity
False: Case must be an exact match
Default: false
skipStringKeys
Optional; Flag to choose if the search will ignore all keys in the array that are not numeric
True: Ignore all non-numeric keys such as "Cat" and "Dog" but match with keys like 0 1 2 3 4
False: Match all keys regardless of what they are made of
-1: Match only non-numeric keys and nothing else such as only match "Cat" and "Dog" but not numbers like 0 1 2 3 4
Default: false
Return Value
Success: Returns integer index if the value was located in the array section or a string of the index key if the value was found in the dictionary section.
Failure: Returns null (It has to return null since it is the only way to make sure that even every possible key match was invalid).
Remarks
None.
Example
Example of checking for a string in the array and returning its position
my $arr = array("One", "Two", "Three"); // Case sensitive my $pos = IndexOfValue($arr, "Two"); say "Positon is: $pos"; // 1 my $pos = IndexOfValue($arr, "TwO"); say "Positon is: $pos"; // null // Case insensitive my $pos = IndexOfValue($arr, "TwO", false, true); say "Positon is: $pos"; // 1
Example of checking for a value in the array and returning its position
my $arr = array("One", "Two", "100", "Three"); // Non strict my $pos = IndexOfValue($arr, 100); say "Positon is: $pos"; // 2 // Strict my $pos = IndexOfValue($arr, 100, true); say "Positon is: $pos"; // null
my $arr = array("One", "Two", (double)100, "Three"); // Non strict my $pos = IndexOfValue($arr, 100.0); say "Positon is: $pos"; // 2 // Strict my $pos = IndexOfValue($arr, 100, true); say "Positon is: $pos"; // null (because 100 is an Integer and 100.0 is a double)
my $arr = array("One", "Two", (double)100, "Three"); // Non strict my $pos = IndexOfValue($arr, 100.0); say "Positon is: $pos"; // 2 // Strict my $pos = IndexOfValue($arr, 100.0, true); say "Positon is: $pos"; // 2
Example of when the value is found to have a key that is a string and not numeric
my $arr = array('One' => 'blue', 'Two' => 'red', 'Three' => 'green', 'Four' => 'red', 'pink', 'purple'); $pos = IndexOfValue($arr, 'blue'); say "Positon is: $pos"; // One $pos = IndexOfValue($arr, 'green'); say "Positon is: $pos"; // Three $pos = IndexOfValue($arr, 'purple'); say "Positon is: $pos"; // 1
Example of using Regexp as the needle
my $arr = array("One", "One1", "One", "One"); $pos = IndexOfValue($arr, m/\d+/); say "Positon is: $pos"; // 1
Example of using Regexp as the needle and the found value has a string key
my $arr = array('One' => 'blue', 'Two' => 'red', 'Three' => 'green', 'Four' => 'red', 'pink', 'purple'); $pos = IndexOfValue($arr, m/ee/); say "Positon is: $pos"; // Three
Example of using the ignore non numeric key flag
my $arr = array('One' => 'blue', 'Two' => 'red', 'pink', 'blue'); $pos = IndexOfValue($arr, 'blue'); say "Positon is: $pos"; // 1 // Skip all dictionary keys and only match numeric keys $pos = IndexOfValue($arr, 'blue', false, false, true); say "Positon is: $pos"; // 1
Example of using the ignore non numeric key flag with -1 to force it to only match string keys and nothing else
my $arr = array('One' => 'blue', 'Two' => 'red', 'pink', 'blue'); $pos = IndexOfValue($arr, 'blue'); say "Positon is: $pos"; // 1 // Skip all non-dictionary keys and only match numeric keys $pos = IndexOfValue($arr, 'blue', false, false, -1); say "Positon is: $pos"; // One