Accessor to sub-ranges of arrays. This is used, for example, for rendering large lists or tables in which only a part of the items should be used for processing or rendering.
An array projection provides convenient access and can apply operations to sub-ranges.
Methods
(inner) create()
Create a projection.
arrayProjection.create([1,2,3,4,5,6,7,8,9], 4, 1)
=> { array: [/.../], from: 1, to: 5 }
(inner) originalToProjectedIndex()
Maps index from original Array to projection.
var proj = arrayProjection.create([1,2,3,4,5,6,7,8,9], 4, 3);
arrayProjection.originalToProjectedIndex(proj, 1) => null
arrayProjection.originalToProjectedIndex(proj, 3) => 0
arrayProjection.originalToProjectedIndex(proj, 5) => 2
(inner) projectedToOriginalIndex()
Inverse to originalToProjectedIndex
.
var proj = arrayProjection.create([1,2,3,4,5,6,7,8,9], 4, 3);
projectedToOriginalIndex(proj, 1) => 4
(inner) toArray()
Convert a projection back to an array.
(inner) transformToIncludeIndex()
Computes how the projection needs to shift minimally (think "scroll" down or up) so that index becomes "visible" in projection.
var proj = arrayProjection.create([1,2,3,4,5,6,7,8,9], 4, 3);
arrayProjection.transformToIncludeIndex(proj, 1)
=> { array: [/.../], from: 1, to: 5 }