PSArray
(Persistent Structure Array) implements an array as a persistent data structure. “Persistent data structure” means that each instance is immutable. “Modifications” instead return a new instance.
Unlike a native JavaScript Array, accessing an item in a PSArray requires use of the get
method.
In the descriptions below, psa
is the name of a PSArray instance.
PSArray.create()
Create a new PSArray.
psa.length
The number of elements in the arrary [data property].
psa.get(index)
Return the item at index index
, or undefined
if the entry is empty.
psa.push(item1, ...)
Return a new PSArray that contains all of the items in psa
, followed by all of the arguments (item1, ...).
psa.forEach(fn [,thisArg])
Call fn(value, index)
with each element in the array.
psa.diff(psaOld)
Return a “diff” object describing the changes from psaOld
to psa
.
diff.index
= where the change starts. This is the number of initial items in psaOld
that remain in psa
.
diff.numDel
= number of items deleted. These values exist in psaOld
starting at diff.index
but not in psa
.
diff.numIns
= number of items inserted. These values exist in psa
starting at diff.index
but not in psaOld
.
Any remaining items in psaOld
after index diff.index + diff.numDel
appear in psa
starting at diff.index + diff.numIns
.
Note that when diff.index == psaOld.length
is true, diff.numDel
must be 0
, and the diff describes a simple append
operation.