SubIndex(A,u,I)
Returns the value from index «I» at which the value «u» is found in array «A». If «u» does not occur in «A», returns Null. If «u» occurs more than once in «A», returns the value in «I» corresponding to the last occurrence of «u».
SubIndex is the inverse of SubScript. While SubScript maps from the index value to the array element, SubIndex maps from the array element to the index value. SubIndex is not as efficient as SubScript -- while SubScript makes use of a hash-table for constant-time associative lookup, SubIndex must search the array each time for the indicated value, which takes linear time relative to the size of the array.
Library
Array Functions
Array Abstraction
When «A» has more than one dimension, or «u» is an array, SubIndex array abstracts according to the standard rules of array abstraction. For example, when «A» contains an index other than I, SubIndex is applied to each slice of that index, returning the position of «u» in the corresponding slice. When «u» contains an array of values, the position of each of those values in «A» is returned.
Examples
Let:
I → |
'a' |
'b' |
'c' |
'd' |
'e' |
'f'
|
A →
|
4 |
3 |
2 |
5 |
3 |
1
|
|
|
B
|
I
|
'a' |
'b' |
'c' |
'd' |
'e' |
'f'
|
J
|
1
|
3 |
5 |
2 |
4 |
5 |
3
|
2
|
2 |
1 |
5 |
2 |
3 |
4
|
|
|
K → |
1 |
2 |
3 |
4 |
5
|
C →
|
4 |
2 |
5 |
1 |
3
|
|
Then:
- SubIndex(A,2,I) → 'c'
- SubIndex(A,3,I) → 'e'
- SubIndex(A,6,I) → «null»
- SubIndex(A,1..5,I) → ['f', 'c', 'e', 'a', 'd']
|
SubIndex(A,C,I) → |
K → |
1 |
2 |
3 |
4 |
5
|
|
'a' |
'c' |
'd' |
'f' |
'e'
|
|
|
SubIndex(B,C,I) → |
B
|
K
|
1 |
2 |
3 |
4 |
5
|
J
|
1
|
'd' |
'c' |
'e' |
«null» |
'f'
|
2
|
'f' |
'd' |
'c' |
'd' |
'e'
|
|
See Also
Enable comment auto-refresher