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 }